Mercurial > hg > dmlib
annotate tools/lib64gfx.c @ 1478:d883b4c1cf48
More work on RLE encoding/decoding.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 11 May 2018 02:42:49 +0300 |
parents | f0232684857a |
children | df6dacb48970 |
rev | line source |
---|---|
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1 /* |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2 * Functions for reading and converting various restricted |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
3 * C64/etc and/or indexed/paletted graphics formats. |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
4 * Programmed and designed by Matti 'ccr' Hamalainen |
1456 | 5 * (C) Copyright 2012-2018 Tecnic Software productions (TNSP) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
6 * |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
7 * Please read file 'COPYING' for information on license and distribution. |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
8 */ |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
9 #include "lib64gfx.h" |
435 | 10 |
514 | 11 #define BUF_SIZE_INITIAL (16*1024) |
12 #define BUF_SIZE_GROW (4*1024) | |
13 | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
14 |
1381 | 15 // Based on Pepto's palette, stolen from VICE |
1426
4c7b456d7f0b
Rename global dmC64Palette to dmDefaultC64Palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
1425
diff
changeset
|
16 DMColor dmDefaultC64Palette[C64_NCOLORS] = |
1381 | 17 { |
18 { 0x00, 0x00, 0x00, 0xff }, | |
19 { 0xFF, 0xFF, 0xFF, 0xff }, | |
20 { 0x68, 0x37, 0x2B, 0xff }, | |
21 { 0x70, 0xA4, 0xB2, 0xff }, | |
22 { 0x6F, 0x3D, 0x86, 0xff }, | |
23 { 0x58, 0x8D, 0x43, 0xff }, | |
24 { 0x35, 0x28, 0x79, 0xff }, | |
25 { 0xB8, 0xC7, 0x6F, 0xff }, | |
26 { 0x6F, 0x4F, 0x25, 0xff }, | |
27 { 0x43, 0x39, 0x00, 0xff }, | |
28 { 0x9A, 0x67, 0x59, 0xff }, | |
29 { 0x44, 0x44, 0x44, 0xff }, | |
30 { 0x6C, 0x6C, 0x6C, 0xff }, | |
31 { 0x9A, 0xD2, 0x84, 0xff }, | |
32 { 0x6C, 0x5E, 0xB5, 0xff }, | |
33 { 0x95, 0x95, 0x95, 0xff }, | |
34 }; | |
35 | |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
36 #define DM_RLE_MARKER 1 |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
37 #define DM_RLE_MASK 2 |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
38 |
1381 | 39 |
1461 | 40 #define DM_GET_ADDR_LO(addr) ((addr) & 0xff) |
41 #define DM_GET_ADDR_HI(addr) (((addr) >> 8) & 0xff) | |
42 | |
43 | |
1457
dcff9ac95d3f
Add function to set DMImage's palette to default C64 palette and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1456
diff
changeset
|
44 void dmSetDefaultC64Palette(DMImage *img) |
dcff9ac95d3f
Add function to set DMImage's palette to default C64 palette and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1456
diff
changeset
|
45 { |
dcff9ac95d3f
Add function to set DMImage's palette to default C64 palette and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1456
diff
changeset
|
46 img->constpal = TRUE; |
dcff9ac95d3f
Add function to set DMImage's palette to default C64 palette and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1456
diff
changeset
|
47 img->pal = dmDefaultC64Palette; |
dcff9ac95d3f
Add function to set DMImage's palette to default C64 palette and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1456
diff
changeset
|
48 img->ncolors = C64_NCOLORS; |
dcff9ac95d3f
Add function to set DMImage's palette to default C64 palette and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1456
diff
changeset
|
49 img->ctransp = 255; |
dcff9ac95d3f
Add function to set DMImage's palette to default C64 palette and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1456
diff
changeset
|
50 } |
dcff9ac95d3f
Add function to set DMImage's palette to default C64 palette and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1456
diff
changeset
|
51 |
dcff9ac95d3f
Add function to set DMImage's palette to default C64 palette and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1456
diff
changeset
|
52 |
1381 | 53 static BOOL dmCompareAddr16(const Uint8 *buf, const size_t offs, const Uint16 addr) |
54 { | |
55 return buf[offs ] == DM_GET_ADDR_LO(addr) && | |
56 buf[offs + 1] == DM_GET_ADDR_HI(addr); | |
57 } | |
58 | |
59 | |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
60 int dmC64ImageGetNumBanks(const DMC64ImageFormat *fmt) |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
61 { |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
62 int nbanks = 0; |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
63 for (int i = 0; i < D64_MAX_ENCDEC_OPS; i++) |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
64 { |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
65 const DMC64EncDecOp *op = &fmt->encdecOps[i]; |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
66 if (op->type == DT_LAST) |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
67 break; |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
68 |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
69 if (op->bank > nbanks) |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
70 nbanks = op->bank; |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
71 } |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
72 |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
73 return nbanks + 1; |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
74 } |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
75 |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
76 |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
77 DMC64Image *dmC64ImageAlloc(const DMC64ImageFormat *fmt) |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
78 { |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
79 DMC64Image *img = dmMalloc0(sizeof(DMC64Image)); |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
80 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
81 if (img == NULL) |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
82 return NULL; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
83 |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
84 // Initialize image information |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
85 img->width = fmt->width; |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
86 img->height = fmt->height; |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
87 img->ch_width = fmt->ch_width; |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
88 img->ch_height = fmt->ch_height; |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
89 img->nbanks = dmC64ImageGetNumBanks(fmt); |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
90 |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
91 // Allocate banks |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
92 if ((img->color = dmCalloc(img->nbanks, sizeof(Uint8 *))) == NULL || |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
93 (img->bitmap = dmCalloc(img->nbanks, sizeof(Uint8 *))) == NULL || |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
94 (img->screen = dmCalloc(img->nbanks, sizeof(Uint8 *))) == NULL || |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
95 (img->charmem = dmCalloc(img->nbanks, sizeof(Uint8 *))) == NULL) |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
96 goto err; |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
97 |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
98 for (int i = 0; i < img->nbanks; i++) |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
99 { |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
100 if ((img->color[i] = dmMalloc0(img->ch_width * img->ch_height)) == NULL) |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
101 goto err; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
102 |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
103 if ((img->bitmap[i] = dmMalloc0(img->ch_width * img->ch_height * 8)) == NULL) |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
104 goto err; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
105 |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
106 if ((img->screen[i] = dmMalloc0(img->ch_width * img->ch_height)) == NULL) |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
107 goto err; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
108 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
109 if ((img->charmem[i] = dmMalloc0(C64_MAX_CHARS * C64_CHR_SIZE)) == NULL) |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
110 goto err; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
111 } |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
112 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
113 return img; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
114 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
115 err: |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
116 dmC64ImageFree(img); |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
117 return NULL; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
118 } |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
119 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
120 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
121 void dmC64ImageFree(DMC64Image *img) |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
122 { |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
123 if (img != NULL) |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
124 { |
1462
9cb6dd1046bf
Fix memory leaks by freeing more things in dmC64ImageFree().
Matti Hamalainen <ccr@tnsp.org>
parents:
1461
diff
changeset
|
125 // Free the allocated areas |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
126 for (int i = 0; i < img->nbanks; i++) |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
127 { |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
128 dmFree(img->color[i]); |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
129 dmFree(img->bitmap[i]); |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
130 dmFree(img->screen[i]); |
932 | 131 dmFree(img->charmem[i]); |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
132 } |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
133 |
1462
9cb6dd1046bf
Fix memory leaks by freeing more things in dmC64ImageFree().
Matti Hamalainen <ccr@tnsp.org>
parents:
1461
diff
changeset
|
134 // Free the pointers to the areas |
9cb6dd1046bf
Fix memory leaks by freeing more things in dmC64ImageFree().
Matti Hamalainen <ccr@tnsp.org>
parents:
1461
diff
changeset
|
135 dmFree(img->color); |
9cb6dd1046bf
Fix memory leaks by freeing more things in dmC64ImageFree().
Matti Hamalainen <ccr@tnsp.org>
parents:
1461
diff
changeset
|
136 dmFree(img->bitmap); |
9cb6dd1046bf
Fix memory leaks by freeing more things in dmC64ImageFree().
Matti Hamalainen <ccr@tnsp.org>
parents:
1461
diff
changeset
|
137 dmFree(img->screen); |
9cb6dd1046bf
Fix memory leaks by freeing more things in dmC64ImageFree().
Matti Hamalainen <ccr@tnsp.org>
parents:
1461
diff
changeset
|
138 dmFree(img->charmem); |
9cb6dd1046bf
Fix memory leaks by freeing more things in dmC64ImageFree().
Matti Hamalainen <ccr@tnsp.org>
parents:
1461
diff
changeset
|
139 |
9cb6dd1046bf
Fix memory leaks by freeing more things in dmC64ImageFree().
Matti Hamalainen <ccr@tnsp.org>
parents:
1461
diff
changeset
|
140 // Extra data .. |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
141 for (int i = 0; i < C64_MAX_EXTRA_DATA; i++) |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
142 dmFree(img->extraData[i]); |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
143 |
1167 | 144 dmMemset(img, 0, sizeof(DMC64Image)); |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
145 dmFree(img); |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
146 } |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
147 } |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
148 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
149 |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
150 char * dmC64GetImageTypeString(char *buf, const size_t len, const int type) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
151 { |
1425
f08c4ace528d
Simplify dmC64GetImageTypeString().
Matti Hamalainen <ccr@tnsp.org>
parents:
1419
diff
changeset
|
152 snprintf(buf, len, |
f08c4ace528d
Simplify dmC64GetImageTypeString().
Matti Hamalainen <ccr@tnsp.org>
parents:
1419
diff
changeset
|
153 "%s%s%s%s", |
f08c4ace528d
Simplify dmC64GetImageTypeString().
Matti Hamalainen <ccr@tnsp.org>
parents:
1419
diff
changeset
|
154 (type & D64_FMT_FLI) ? "FLI " : "", |
f08c4ace528d
Simplify dmC64GetImageTypeString().
Matti Hamalainen <ccr@tnsp.org>
parents:
1419
diff
changeset
|
155 (type & D64_FMT_MC) ? "MCol " : "HiRes ", |
f08c4ace528d
Simplify dmC64GetImageTypeString().
Matti Hamalainen <ccr@tnsp.org>
parents:
1419
diff
changeset
|
156 (type & D64_FMT_ILACE) ? "Ilace " : "", |
f08c4ace528d
Simplify dmC64GetImageTypeString().
Matti Hamalainen <ccr@tnsp.org>
parents:
1419
diff
changeset
|
157 (type & D64_FMT_CHAR) ? "CharMap" : "" |
f08c4ace528d
Simplify dmC64GetImageTypeString().
Matti Hamalainen <ccr@tnsp.org>
parents:
1419
diff
changeset
|
158 ); |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
159 |
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
160 return buf; |
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
161 } |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
162 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
163 |
827 | 164 int dmC64ConvertCSDataToImage(DMImage *img, |
410
e4b2f689aff6
Stdint -> SDL types conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
407
diff
changeset
|
165 int xoffs, int yoffs, const Uint8 *buf, |
915 | 166 int width, int height, BOOL multicolor, |
167 int *colors) | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
168 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
169 int yc, widthpx = width * 8; |
410
e4b2f689aff6
Stdint -> SDL types conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
407
diff
changeset
|
170 Uint8 *dp; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
171 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
172 if (img == NULL) |
517
e2a76bb59888
Return better error values, using DMERR_* enums.
Matti Hamalainen <ccr@tnsp.org>
parents:
516
diff
changeset
|
173 return DMERR_NULLPTR; |
e2a76bb59888
Return better error values, using DMERR_* enums.
Matti Hamalainen <ccr@tnsp.org>
parents:
516
diff
changeset
|
174 |
e2a76bb59888
Return better error values, using DMERR_* enums.
Matti Hamalainen <ccr@tnsp.org>
parents:
516
diff
changeset
|
175 if (xoffs < 0 || yoffs < 0 || |
e2a76bb59888
Return better error values, using DMERR_* enums.
Matti Hamalainen <ccr@tnsp.org>
parents:
516
diff
changeset
|
176 xoffs > img->width - widthpx || |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
177 yoffs > img->height - height) |
517
e2a76bb59888
Return better error values, using DMERR_* enums.
Matti Hamalainen <ccr@tnsp.org>
parents:
516
diff
changeset
|
178 return DMERR_INVALID_ARGS; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
179 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
180 dp = img->data + (yoffs * img->pitch) + xoffs; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
181 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
182 if (multicolor) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
183 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
184 for (yc = 0; yc < height; yc++) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
185 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
186 const int offs = yc * width; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
187 int xc; |
410
e4b2f689aff6
Stdint -> SDL types conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
407
diff
changeset
|
188 Uint8 *d = dp; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
189 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
190 for (xc = 0; xc < widthpx / 2; xc++) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
191 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
192 const int b = buf[offs + (xc / 4)]; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
193 const int v = 6 - ((xc * 2) & 6); |
410
e4b2f689aff6
Stdint -> SDL types conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
407
diff
changeset
|
194 const Uint8 c = colors[(b >> v) & 3]; |
925 | 195 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
196 *d++ = c; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
197 *d++ = c; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
198 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
199 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
200 dp += img->pitch; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
201 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
202 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
203 else |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
204 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
205 for (yc = 0; yc < height; yc++) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
206 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
207 const int offs = yc * width; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
208 int xc; |
410
e4b2f689aff6
Stdint -> SDL types conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
407
diff
changeset
|
209 Uint8 *d = dp; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
210 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
211 for (xc = 0; xc < widthpx; xc++) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
212 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
213 const int b = buf[offs + (xc / 8)]; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
214 const int v = 7 - (xc & 7); |
410
e4b2f689aff6
Stdint -> SDL types conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
407
diff
changeset
|
215 const Uint8 c = colors[(b >> v) & 1]; |
925 | 216 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
217 *d++ = c; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
218 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
219 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
220 dp += img->pitch; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
221 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
222 } |
925 | 223 |
517
e2a76bb59888
Return better error values, using DMERR_* enums.
Matti Hamalainen <ccr@tnsp.org>
parents:
516
diff
changeset
|
224 return DMERR_OK; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
225 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
226 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
227 |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
228 static int dmDecodeGenericRLE(DMGrowBuf *dst, const Uint8 *src, const Uint8 *srcEnd, |
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
229 const Uint8 rleMarker, const Uint8 rleMask1, const Uint8 rleMask2, const int rleType) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
230 { |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
231 int res; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
232 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
233 if ((res = dmGrowBufAlloc(dst, BUF_SIZE_INITIAL, BUF_SIZE_GROW)) != DMERR_OK) |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
234 goto err; |
925 | 235 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
236 // Perform RLE decode |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
237 while (src < srcEnd) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
238 { |
1476 | 239 Uint8 data = *src++; |
240 int count = 1; | |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
241 |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
242 switch (rleType) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
243 { |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
244 case DM_RLE_MARKER: |
1476 | 245 // A simple marker byte RLE variant: [Marker] [count] [data] |
246 if (data == rleMarker) | |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
247 { |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
248 if (srcEnd - src < 2) |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
249 { |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
250 res = DMERR_INVALID_DATA; |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
251 goto err; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
252 } |
1476 | 253 count = *src++; |
254 data = *src++; | |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
255 } |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
256 break; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
257 |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
258 case DM_RLE_MASK: |
1476 | 259 // Mask marker RLE: usually high bit(s) of byte mark RLE sequence |
260 // and the lower bits contain the count: [Mask + count] [data] | |
261 if ((data & rleMask1) == rleMarker) | |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
262 { |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
263 if (srcEnd - src < 1) |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
264 { |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
265 res = DMERR_INVALID_DATA; |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
266 goto err; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
267 } |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
268 |
1476 | 269 count = data & rleMask2; |
270 data = *src++; | |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
271 } |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
272 break; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
273 } |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
274 |
1476 | 275 while (count--) |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
276 { |
1476 | 277 if (!dmGrowBufPutU8(dst, data)) |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
278 { |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
279 res = DMERR_MALLOC; |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
280 goto err; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
281 } |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
282 } |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
283 } |
523
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
284 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
285 res = DMERR_OK; |
523
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
286 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
287 err: |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
288 return res; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
289 } |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
290 |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
291 |
1478
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
292 static int dmDecodeGenericRLEAlloc(DMGrowBuf *dst, const Uint8 *src, const Uint8 *srcEnd, |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
293 const Uint8 rleMarker, const Uint8 rleMask1, const Uint8 rleMask2, const int rleType) |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
294 { |
1478
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
295 int res; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
296 if ((res = dmGrowBufAlloc(dst, BUF_SIZE_INITIAL, BUF_SIZE_GROW)) != DMERR_OK) |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
297 return res; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
298 |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
299 return dmDecodeGenericRLE(dst, src, srcEnd, rleMarker, rleMask1, rleMask2, rleType); |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
300 } |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
301 |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
302 |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
303 static BOOL dmEncodeGenericRLESequence(DMGrowBuf *dst, const Uint8 data, const Uint8 count, const Uint8 rleMarker, const int rleType) |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
304 { |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
305 switch (rleType) |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
306 { |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
307 case DM_RLE_MARKER: |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
308 // A simple marker byte RLE variant: [Marker] [count] [data] |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
309 if (!dmGrowBufPutU8(dst, rleMarker) || |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
310 !dmGrowBufPutU8(dst, count) || |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
311 !dmGrowBufPutU8(dst, data)) |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
312 return FALSE; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
313 break; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
314 |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
315 case DM_RLE_MASK: |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
316 // Mask marker RLE: usually high bit(s) of byte mark RLE sequence |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
317 // and the lower bits contain the count: [Mask + count] [data] |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
318 if (!dmGrowBufPutU8(dst, rleMarker | count) || |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
319 !dmGrowBufPutU8(dst, data)) |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
320 return FALSE; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
321 break; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
322 } |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
323 |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
324 return TRUE; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
325 } |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
326 |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
327 |
1478
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
328 static int dmEncodeGenericRLE(DMGrowBuf *dst, const Uint8 *src, const Uint8 *srcEnd, |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
329 const Uint8 rleMarker, const Uint8 rleMinCount, const Uint8 rleMaxCount, const int rleType) |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
330 { |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
331 int res; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
332 |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
333 // Perform RLE encoding |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
334 int count = 0, prev; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
335 while (src < srcEnd) |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
336 { |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
337 Uint8 data = *src++; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
338 |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
339 if ((count >= rleMinCount && data != prev) || count >= rleMaxCount) |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
340 { |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
341 if (!dmEncodeGenericRLESequence(dst, prev, count + 1, rleMarker, rleType)) |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
342 { |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
343 res = dmError(DMERR_MALLOC, |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
344 "Could reallocate memory for RLE encoding buffer.\n"); |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
345 goto err; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
346 } |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
347 |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
348 count = 1; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
349 } |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
350 |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
351 prev = data; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
352 } |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
353 |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
354 res = DMERR_OK; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
355 |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
356 err: |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
357 return res; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
358 } |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
359 |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
360 |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
361 static int dmEncodeGenericRLEAlloc(DMGrowBuf *dst, const Uint8 *src, const Uint8 *srcEnd, |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
362 const Uint8 rleMarker, const Uint8 rleMinCount, const Uint8 rleMaxCount, const int rleType) |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
363 { |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
364 int res; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
365 if ((res = dmGrowBufAlloc(dst, BUF_SIZE_INITIAL, BUF_SIZE_GROW)) != DMERR_OK) |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
366 return res; |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
367 |
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
368 return dmEncodeGenericRLE(dst, src, srcEnd, rleMarker, rleMinCount, rleMaxCount, rleType); |
523
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
369 } |
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
370 |
519 | 371 |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
372 static inline Uint8 dmC64GetGenericSCPixel( |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
373 const DMC64Image *img, const int bmoffs, const int scroffs, |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
374 const int vshift, const int vbank, const int vbitmap, const int cbank) |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
375 { |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
376 (void) cbank; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
377 if ((img->bitmap[vbitmap][bmoffs] >> vshift) & 1) |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
378 return img->screen[vbank][scroffs] >> 4; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
379 else |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
380 return img->screen[vbank][scroffs] & 15; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
381 } |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
382 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
383 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
384 static inline Uint8 dmC64GetGenericMCPixel( |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
385 const DMC64Image *img, const int bmoffs, const int scroffs, |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
386 const int vshift, const int vbank, const int vbitmap, const int cbank) |
1369 | 387 { |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
388 switch ((img->bitmap[vbitmap][bmoffs] >> vshift) & 3) |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
389 { |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
390 case 0: return img->bgcolor; break; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
391 case 1: return img->screen[vbank][scroffs] >> 4; break; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
392 case 2: return img->screen[vbank][scroffs] & 15; break; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
393 default: return img->color[cbank][scroffs] & 15; break; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
394 } |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
395 } |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
396 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
397 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
398 static inline Uint8 fmtGetGenericSCPixel( |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
399 const DMC64Image *img, const int bmoffs, const int scroffs, |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
400 const int vshift, const int vbitmap, const int raster) |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
401 { |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
402 (void) raster; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
403 return dmC64GetGenericSCPixel(img, bmoffs, scroffs, vshift, 0, vbitmap, 0); |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
404 } |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
405 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
406 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
407 static inline Uint8 fmtGetGenericMCPixel( |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
408 const DMC64Image *img, const int bmoffs, const int scroffs, |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
409 const int vshift, const int vbitmap, const int raster) |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
410 { |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
411 (void) raster; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
412 return dmC64GetGenericMCPixel(img, bmoffs, scroffs, vshift, 0, vbitmap, 0); |
1369 | 413 } |
414 | |
415 | |
416 static int fmtProbeDrazPaint20Packed(const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) | |
417 { | |
418 const char *ident = (const char *) buf + 2; | |
419 | |
420 if (len > 22 && | |
421 dmCompareAddr16(buf, 0, fmt->addr) && | |
422 strncmp(ident, "DRAZPAINT ", 10) == 0 && | |
423 ident[11] == '.' && ( | |
424 (ident[10] == '1' && ident[12] == '4') || | |
425 (ident[10] == '2' && ident[12] == '0') | |
426 )) | |
427 return DM_PROBE_SCORE_MAX; | |
428 | |
429 return DM_PROBE_SCORE_FALSE; | |
430 } | |
431 | |
432 | |
523
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
433 static int fmtDecodeDrazPaintPacked(DMC64Image *img, const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) |
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
434 { |
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
435 int res; |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
436 DMGrowBuf mem; |
523
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
437 |
1478
d883b4c1cf48
More work on RLE encoding/decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1476
diff
changeset
|
438 if ((res = dmDecodeGenericRLEAlloc(&mem, buf + 0x0e, buf + len, *(buf + 0x0d), 0, 0, DM_RLE_MARKER)) != DMERR_OK) |
523
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
439 goto out; |
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
440 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
441 res = dmC64DecodeGenericBMP(img, mem.data, mem.len, fmt); |
523
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
442 |
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
443 out: |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
444 dmGrowBufFree(&mem); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
445 return res; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
446 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
447 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
448 |
511
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
449 static int fmtProbeDrazLace10Packed(const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
450 { |
511
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
451 if (len > 22 && |
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
452 dmCompareAddr16(buf, 0, fmt->addr) && |
1382 | 453 strncmp((const char *) (buf + 2), "DRAZLACE! 1.0", 13) == 0) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
454 return DM_PROBE_SCORE_MAX; |
925 | 455 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
456 return DM_PROBE_SCORE_FALSE; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
457 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
458 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
459 |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
460 static BOOL fmtDrazLaceSetLaceType(DMC64Image *img, const struct _DMC64EncDecOp *op, const Uint8 *buf, const size_t len) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
461 { |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
462 (void) len; |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
463 img->laceType = buf[op->offs] ? D64_ILACE_RES : D64_ILACE_COLOR; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
464 return TRUE; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
465 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
466 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
467 |
1389
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
468 static int fmtProbeGunPaint(const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
469 { |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
470 if (len > 0x400 && |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
471 dmCompareAddr16(buf, 0, fmt->addr) && |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
472 strncmp((const char *) (buf + 0x3ea), "GUNPAINT (JZ) ", 14) == 0) |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
473 return DM_PROBE_SCORE_MAX; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
474 |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
475 return DM_PROBE_SCORE_FALSE; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
476 } |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
477 |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
478 |
511
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
479 static int fmtProbeAmicaPaintPacked(const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
480 { |
541
7ca6abbbbb40
Use size_t instead of int here to avoid signedness issues.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
481 size_t i, n; |
1433 | 482 |
1392
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
483 if (len < 2048 || !dmCompareAddr16(buf, 0, fmt->addr)) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
484 return DM_PROBE_SCORE_FALSE; |
925 | 485 |
494
abb112ac9916
Prevent false positive probes of certain Interpaint files as Amica Paint
Matti Hamalainen <ccr@tnsp.org>
parents:
468
diff
changeset
|
486 // Interpaint Hi-Res gives a false positive |
1389
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
487 // as do some GunPaint images .. |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
488 if (len == 9002 || fmtProbeGunPaint(buf, len, fmt) > DM_PROBE_SCORE_GOOD) |
494
abb112ac9916
Prevent false positive probes of certain Interpaint files as Amica Paint
Matti Hamalainen <ccr@tnsp.org>
parents:
468
diff
changeset
|
489 return DM_PROBE_SCORE_FALSE; |
925 | 490 |
533
91e2d0d74e2f
Adjust packed Amica paint format probe function to return less false
Matti Hamalainen <ccr@tnsp.org>
parents:
532
diff
changeset
|
491 for (n = 0, i = 2; i < len; i++) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
492 if (buf[i] == 0xC2) n++; |
925 | 493 |
533
91e2d0d74e2f
Adjust packed Amica paint format probe function to return less false
Matti Hamalainen <ccr@tnsp.org>
parents:
532
diff
changeset
|
494 if (n > 50) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
495 return DM_PROBE_SCORE_GOOD; |
533
91e2d0d74e2f
Adjust packed Amica paint format probe function to return less false
Matti Hamalainen <ccr@tnsp.org>
parents:
532
diff
changeset
|
496 if (n > 25) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
497 return DM_PROBE_SCORE_AVG; |
533
91e2d0d74e2f
Adjust packed Amica paint format probe function to return less false
Matti Hamalainen <ccr@tnsp.org>
parents:
532
diff
changeset
|
498 if (n > 10) |
91e2d0d74e2f
Adjust packed Amica paint format probe function to return less false
Matti Hamalainen <ccr@tnsp.org>
parents:
532
diff
changeset
|
499 return DM_PROBE_SCORE_MAYBE; |
1369 | 500 |
533
91e2d0d74e2f
Adjust packed Amica paint format probe function to return less false
Matti Hamalainen <ccr@tnsp.org>
parents:
532
diff
changeset
|
501 return DM_PROBE_SCORE_FALSE; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
502 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
503 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
504 |
410
e4b2f689aff6
Stdint -> SDL types conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
407
diff
changeset
|
505 static int fmtDecodeAmicaPaintPacked(DMC64Image *img, const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
506 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
507 int res; |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
508 DMGrowBuf mem, tmp; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
509 |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
510 // Amica Paint apparently is broken and stores one byte less than it should |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
511 // so we need to do some crappy buffer expansion here .. |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
512 if ((res = dmGrowBufAlloc(&tmp, len + 4, 4)) != DMERR_OK) |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
513 return res; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
514 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
515 tmp.len = len; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
516 memcpy(tmp.data, buf, len); |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
517 tmp.data[tmp.len++] = 0; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
518 |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
519 // Now do an RLE decode on the enlarged buffer |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
520 if ((res = dmDecodeGenericRLE(&mem, tmp.data, tmp.data + tmp.len, 0xC2, 0, 0, DM_RLE_MARKER)) != DMERR_OK) |
523
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
521 goto out; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
522 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
523 // And finally decode to bitmap struct |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
524 res = dmC64DecodeGenericBMP(img, mem.data, mem.len, fmt); |
925 | 525 |
523
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
526 out: |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
527 dmGrowBufFree(&tmp); |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
528 dmGrowBufFree(&mem); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
529 return res; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
530 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
531 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
532 |
1392
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
533 static int fmtProbeFLIDesigner(const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
534 { |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
535 if (len == fmt->size && |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
536 (dmCompareAddr16(buf, 0, 0x3c00) || dmCompareAddr16(buf, 0, 0x3ff0))) |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
537 return DM_PROBE_SCORE_MAX; |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
538 |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
539 return DM_PROBE_SCORE_FALSE; |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
540 } |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
541 |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
542 |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
543 static BOOL fmtTruePaintSetLaceType(DMC64Image *img, const struct _DMC64EncDecOp *op, const Uint8 *buf, const size_t len) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
544 { |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
545 (void) op; |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
546 (void) buf; |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
547 (void) len; |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
548 img->laceType = D64_ILACE_RES; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
549 return TRUE; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
550 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
551 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
552 |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
553 static Uint8 fmtGetPixelTruePaint( |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
554 const DMC64Image *img, const int bmoffs, const int scroffs, |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
555 const int vshift, const int vbitmap, const int raster) |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
556 { |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
557 (void) raster; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
558 return dmC64GetGenericMCPixel(img, bmoffs, scroffs, vshift, 0, vbitmap, 0); |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
559 } |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
560 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
561 |
1369 | 562 #define XX2_MIN_SIZE 4000 |
531
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
563 |
943
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
564 static int fmtProbeFormatXX2(const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
565 { |
1369 | 566 if (len >= XX2_MIN_SIZE && len <= XX2_MIN_SIZE + 8 && |
943
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
567 dmCompareAddr16(buf, 0, fmt->addr)) |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
568 return DM_PROBE_SCORE_MAYBE; |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
569 |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
570 return DM_PROBE_SCORE_FALSE; |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
571 } |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
572 |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
573 |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
574 static int fmtDecodeFormatXX2(DMC64Image *img, const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
575 { |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
576 int res; |
1377 | 577 |
1369 | 578 // If there is only data for less than XX2_MIN_SIZE bytes, |
579 // allocate a buffer of that size and copy data there. | |
580 // Otherwise allocate len bytes. | |
581 size_t nlen = len < XX2_MIN_SIZE ? XX2_MIN_SIZE : len; | |
582 Uint8 *mem = dmMalloc0(nlen); | |
943
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
583 if (mem == NULL) |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
584 return DMERR_MALLOC; |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
585 |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
586 memcpy(mem, buf, len); |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
587 res = dmC64DecodeGenericBMP(img, mem, nlen, fmt); |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
588 |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
589 dmFree(mem); |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
590 return res; |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
591 } |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
592 |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
593 |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
594 #define FUNPAINT2_HEADER_SIZE (0x10) |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
595 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
596 static BOOL fmtProbeFunPaint2Header(const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
597 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
598 return |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
599 len > 30 && |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
600 dmCompareAddr16(buf, 0, fmt->addr) && |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
601 strncmp((const char *) (buf + 2), "FUNPAINT (MT) ", 14) == 0; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
602 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
603 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
604 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
605 static int fmtProbeFunPaint2Unpacked(const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
606 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
607 if (fmtProbeFunPaint2Header(buf, len, fmt) && |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
608 buf[2 + 14] == 0) |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
609 return DM_PROBE_SCORE_MAX; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
610 else |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
611 return DM_PROBE_SCORE_FALSE; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
612 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
613 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
614 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
615 static int fmtProbeFunPaint2Packed(const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
616 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
617 if (fmtProbeFunPaint2Header(buf, len, fmt) && |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
618 buf[2 + 14] != 0) |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
619 return DM_PROBE_SCORE_MAX; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
620 else |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
621 return DM_PROBE_SCORE_FALSE; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
622 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
623 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
624 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
625 static int fmtDecodeFunPaint2Unpacked(DMC64Image *img, const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
626 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
627 return dmC64DecodeGenericBMP(img, buf + FUNPAINT2_HEADER_SIZE, len - FUNPAINT2_HEADER_SIZE, fmt); |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
628 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
629 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
630 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
631 static int fmtDecodeFunPaint2Packed(DMC64Image *img, const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
632 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
633 int res; |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
634 DMGrowBuf mem; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
635 dmGrowBufInit(&mem); |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
636 |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
637 if ((res = dmDecodeGenericRLE(&mem, buf + FUNPAINT2_HEADER_SIZE, buf + len, *(buf + 15), 0, 0, DM_RLE_MARKER)) != DMERR_OK) |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
638 goto out; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
639 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
640 res = dmC64DecodeGenericBMP(img, mem.data, mem.len, fmt); |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
641 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
642 out: |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
643 dmGrowBufFree(&mem); |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
644 return res; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
645 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
646 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
647 |
1471
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
648 static int fmtEncodeStub(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt) |
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
649 { |
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
650 (void) buf; |
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
651 (void) img; |
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
652 (void) fmt; |
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
653 |
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
654 return dmError(DMERR_NOT_SUPPORTED, |
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
655 "Encoding of '%s' format not supported.\n", |
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
656 fmt->name); |
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
657 } |
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
658 |
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
659 |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
660 static Uint8 fmtGetPixelFunPaint2( |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
661 const DMC64Image *img, const int bmoffs, const int scroffs, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
662 const int vshift, const int vbitmap, const int raster) |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
663 { |
1390 | 664 const int vbank = (raster & 7) + (vbitmap * 8); |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
665 int vr, vb; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
666 if (raster < 100) |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
667 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
668 vb = 0; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
669 vr = raster; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
670 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
671 else |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
672 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
673 vb = 0; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
674 vr = raster - 100; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
675 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
676 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
677 switch ((img->bitmap[vbitmap][bmoffs] >> vshift) & 3) |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
678 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
679 case 0: return img->extraData[vb][vr] & 15; break; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
680 case 1: return img->screen[vbank][scroffs] >> 4; break; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
681 case 2: return img->screen[vbank][scroffs] & 15; break; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
682 default: return img->color[0][scroffs] & 15; break; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
683 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
684 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
685 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
686 |
1389
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
687 static Uint8 fmtGetPixelGunPaint( |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
688 const DMC64Image *img, const int bmoffs, const int scroffs, |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
689 const int vshift, const int vbitmap, const int raster) |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
690 { |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
691 const int vbank = (raster & 7);// + (vbitmap * 8); |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
692 int vr, vb; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
693 if (raster < 177) |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
694 { |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
695 vb = 0; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
696 vr = raster; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
697 } |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
698 else |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
699 { |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
700 vb = 0; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
701 vr = raster - 177; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
702 } |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
703 |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
704 switch ((img->bitmap[vbitmap][bmoffs] >> vshift) & 3) |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
705 { |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
706 case 0: return img->extraData[vb][vr] & 15; break; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
707 case 1: return img->screen[vbank][scroffs] >> 4; break; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
708 case 2: return img->screen[vbank][scroffs] & 15; break; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
709 default: return img->color[0][scroffs] & 15; break; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
710 } |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
711 } |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
712 |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
713 |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
714 static Uint8 fmtGetPixelBMFLI( |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
715 const DMC64Image *img, const int bmoffs, const int scroffs, |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
716 const int vshift, const int vbitmap, const int raster) |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
717 { |
1380 | 718 const int vbank = raster & 7; |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
719 switch ((img->bitmap[vbitmap][bmoffs] >> vshift) & 3) |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
720 { |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
721 case 0: return img->extraData[0][raster]; break; |
1380 | 722 case 1: return img->screen[vbank][scroffs] >> 4; break; |
723 case 2: return img->screen[vbank][scroffs] & 15; break; | |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
724 default: return img->color[0][scroffs] & 15; break; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
725 } |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
726 } |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
727 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
728 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
729 static Uint8 fmtGetPixelFLIDesigner( |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
730 const DMC64Image *img, const int bmoffs, const int scroffs, |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
731 const int vshift, const int vbitmap, const int raster) |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
732 { |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
733 return dmC64GetGenericMCPixel(img, bmoffs, scroffs, vshift, raster & 7, vbitmap, 0); |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
734 } |
943
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
735 |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
736 |
1394
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
737 static Uint8 fmtGetPixelCHFLI( |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
738 const DMC64Image *img, const int bmoffs, const int scroffs, |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
739 const int vshift, const int vbitmap, const int raster) |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
740 { |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
741 const int vbank = raster & 7; |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
742 |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
743 if ((img->bitmap[vbitmap][bmoffs] >> vshift) & 1) |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
744 return img->screen[vbank][scroffs] >> 4; |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
745 else |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
746 return img->screen[vbank][scroffs] & 15; |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
747 } |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
748 |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
749 |
1369 | 750 // |
751 // Array with data for supported formats | |
752 // | |
1393
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
753 #define DEF_SCREEN_RAM(start, oindex, bindex, osize) { DT_SCREEN_RAM, (start) + ((osize) * (oindex)), (bindex), 0, NULL, NULL } |
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
754 #define DEF_SCREEN_RAMS_8(start, sindex, osize) \ |
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
755 DEF_SCREEN_RAM((start), 0, (sindex + 0), (osize)), \ |
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
756 DEF_SCREEN_RAM((start), 1, (sindex + 1), (osize)), \ |
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
757 DEF_SCREEN_RAM((start), 2, (sindex + 2), (osize)), \ |
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
758 DEF_SCREEN_RAM((start), 3, (sindex + 3), (osize)), \ |
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
759 DEF_SCREEN_RAM((start), 4, (sindex + 4), (osize)), \ |
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
760 DEF_SCREEN_RAM((start), 5, (sindex + 5), (osize)), \ |
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
761 DEF_SCREEN_RAM((start), 6, (sindex + 6), (osize)), \ |
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
762 DEF_SCREEN_RAM((start), 7, (sindex + 7), (osize)), |
1388
4f81528aa4f6
Simplify some image format definitions by using macro to define screen ram blocks.
Matti Hamalainen <ccr@tnsp.org>
parents:
1387
diff
changeset
|
763 |
4f81528aa4f6
Simplify some image format definitions by using macro to define screen ram blocks.
Matti Hamalainen <ccr@tnsp.org>
parents:
1387
diff
changeset
|
764 |
516 | 765 const DMC64ImageFormat dmC64ImageFormats[] = |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
766 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
767 { |
1475 | 768 D64_FMT_MC, "d2p", "DrazPaint 1.4/2.0 (packed)", 0x5800, 0, |
939
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
769 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
770 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1443 | 771 fmtProbeDrazPaint20Packed, |
1471
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
772 fmtDecodeDrazPaintPacked, fmtEncodeStub, |
1443 | 773 NULL, NULL, |
774 NULL, | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
775 { |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
776 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
777 { DT_BITMAP, 0x0800, 0, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
778 { DT_SCREEN_RAM, 0x0400, 0, 0, NULL, NULL }, |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
779 { DT_COLOR_REG, 0x2740, 0, DC_BGCOL, NULL, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
780 { DT_LAST, 0, 0, 0, NULL, NULL }, |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
781 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
782 }, |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
783 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
784 { |
1475 | 785 D64_FMT_MC, "drp", "DrazPaint (unpacked)", 0x5800, 10051, |
786 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, | |
787 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, | |
788 NULL, | |
789 NULL, NULL, | |
790 NULL, NULL, | |
791 NULL, | |
792 { | |
793 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, | |
794 { DT_BITMAP, 0x0800, 0, 0, NULL, NULL }, | |
795 { DT_SCREEN_RAM, 0x0400, 0, 0, NULL, NULL }, | |
796 { DT_COLOR_REG, 0x2740, 0, DC_BGCOL, NULL, NULL }, | |
797 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
798 } | |
799 }, | |
800 | |
801 { | |
924
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
802 D64_FMT_MC | D64_FMT_ILACE, "dlp", "DrazLace 1.0 (packed)", 0x5800, 0, |
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
803 C64_SCR_WIDTH , C64_SCR_HEIGHT, |
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
804 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
1443 | 805 fmtProbeDrazLace10Packed, |
1471
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
806 fmtDecodeDrazPaintPacked, fmtEncodeStub, |
1443 | 807 NULL, NULL, |
808 NULL, | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
809 { |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
810 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
811 { DT_BITMAP, 0x0800, 0, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
812 { DT_SCREEN_RAM, 0x0400, 0, 0, NULL, NULL }, |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
813 { DT_COLOR_REG, 0x2740, 0, DC_BGCOL, NULL, NULL }, |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
814 { DT_BITMAP, 0x2800, 1, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
815 { DT_DEC_FUNCTION, 0x2742, 0, 1, fmtDrazLaceSetLaceType, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
816 { DT_LAST, 0, 0, 0, NULL, NULL }, |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
817 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
818 }, |
925 | 819 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
820 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
821 D64_FMT_MC | D64_FMT_ILACE, "drl", "DrazLace 1.0 (unpacked)", 0x5800, 18242, |
924
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
822 C64_SCR_WIDTH , C64_SCR_HEIGHT, |
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
823 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
1442 | 824 NULL, |
511
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
825 NULL, NULL, |
1442 | 826 NULL, NULL, |
827 NULL, | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
828 { |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
829 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
830 { DT_BITMAP, 0x0800, 0, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
831 { DT_SCREEN_RAM, 0x0400, 0, 0, NULL, NULL }, |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
832 { DT_COLOR_REG, 0x2740, 0, DC_BGCOL, NULL, NULL }, |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
833 { DT_BITMAP, 0x2800, 1, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
834 { DT_DEC_FUNCTION, 0x2742, 0, 1, fmtDrazLaceSetLaceType, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
835 { DT_LAST, 0, 0, 0, NULL, NULL }, |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
836 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
837 }, |
925 | 838 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
839 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
840 D64_FMT_MC | D64_FMT_ILACE, "mci", "Truepaint (unpacked)", 0x9c00, 19434, |
924
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
841 C64_SCR_WIDTH , C64_SCR_HEIGHT, |
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
842 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
1442 | 843 NULL, |
511
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
844 NULL, NULL, |
1443 | 845 NULL, NULL, |
846 fmtGetPixelTruePaint, | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
847 { |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
848 { DT_SCREEN_RAM, 0x0000, 0, 0, NULL, NULL }, |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
849 { DT_COLOR_REG, 0x03e8, 0, DC_BGCOL, NULL, NULL }, |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
850 { DT_BITMAP, 0x0400, 0, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
851 { DT_BITMAP, 0x2400, 1, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
852 { DT_SCREEN_RAM, 0x4400, 1, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
853 { DT_COLOR_RAM, 0x4800, 0, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
854 { DT_DEC_FUNCTION, 0x0000, 0, 0, fmtTruePaintSetLaceType, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
855 { DT_LAST, 0, 0, 0, NULL, NULL }, |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
856 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
857 }, |
925 | 858 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
859 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
860 D64_FMT_MC, "kla", "Koala Paint (unpacked)", 0x6000, 10003, |
939
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
861 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
862 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 863 NULL, |
511
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
864 NULL, NULL, |
1442 | 865 NULL, NULL, |
866 NULL, | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
867 { |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
868 { DT_BITMAP, 0x0000, 0, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
869 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, |
531
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
870 { DT_COLOR_RAM, 0x2328, 0, 0, NULL, NULL }, |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
871 { DT_COLOR_REG, 0x2710, 0, DC_BGCOL, NULL, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
872 { DT_LAST, 0, 0, 0, NULL, NULL }, |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
873 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
874 }, |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
875 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
876 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
877 D64_FMT_MC, "ocp", "Advanced Art Studio (unpacked)", 0x2000, 10018, |
939
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
878 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
879 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 880 NULL, |
524
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
881 NULL, NULL, |
1442 | 882 NULL, NULL, |
883 NULL, | |
524
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
884 { |
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
885 { DT_BITMAP, 0x0000, 0, 0, NULL, NULL }, |
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
886 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, |
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
887 { DT_COLOR_RAM, 0x2338, 0, 0, NULL, NULL }, |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
888 { DT_COLOR_REG, 0x2329, 0, DC_BGCOL, NULL, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
889 { DT_LAST, 0, 0, 0, NULL, NULL }, |
524
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
890 } |
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
891 }, |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
892 |
524
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
893 { |
924
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
894 D64_FMT_MC, "ami", "Amica Paint (packed)", 0x4000, 0, |
939
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
895 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
896 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 897 fmtProbeAmicaPaintPacked, |
1471
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
898 fmtDecodeAmicaPaintPacked, fmtEncodeStub, |
1442 | 899 NULL, NULL, |
900 NULL, | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
901 { |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
902 { DT_COLOR_RAM, 0x2328, 0, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
903 { DT_BITMAP, 0x0000, 0, 0, NULL, NULL }, |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
904 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
905 { DT_COLOR_REG, 0x2710, 0, DC_BGCOL, NULL, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
906 { DT_LAST, 0, 0, 0, NULL, NULL }, |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
907 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
908 }, |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
909 |
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
910 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
911 D64_FMT_MC, "rpm", "Run Paint (unpacked)", 0x6000, 10006, |
939
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
912 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
913 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 914 NULL, |
527
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
915 NULL, NULL, |
1442 | 916 NULL, NULL, |
917 NULL, | |
527
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
918 { |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
919 { DT_COLOR_RAM, 0x2328, 0, 0, NULL, NULL }, |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
920 { DT_BITMAP, 0x0000, 0, 0, NULL, NULL }, |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
921 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
922 { DT_COLOR_REG, 0x2710, 0, DC_BGCOL, NULL, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
923 { DT_LAST, 0, 0, 0, NULL, NULL }, |
527
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
924 } |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
925 }, |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
926 |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
927 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
928 D64_FMT_HIRES, "art", "Art Studio (unpacked)", 0x2000, 9009, |
939
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
929 C64_SCR_WIDTH , C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
930 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 931 NULL, |
527
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
932 NULL, NULL, |
1442 | 933 NULL, NULL, |
934 NULL, | |
527
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
935 { |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
936 { DT_BITMAP, 0x0000, 0, 0, NULL, NULL }, |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
937 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
938 { DT_LAST, 0, 0, 0, NULL, NULL }, |
527
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
939 } |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
940 }, |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
941 |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
942 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
943 D64_FMT_HIRES, "iph", "Interpaint (unpacked)", 0x4000, 9002, |
924
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
944 C64_SCR_WIDTH , C64_SCR_HEIGHT, |
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
945 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
1442 | 946 NULL, |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
947 NULL, NULL, |
1442 | 948 NULL, NULL, |
949 NULL, | |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
950 { |
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
951 { DT_BITMAP, 0x0000, 0, 0, NULL, NULL }, |
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
952 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
953 { DT_LAST, 0, 0, 0, NULL, NULL }, |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
954 } |
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
955 }, |
1396 | 956 |
1370
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
957 { |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
958 D64_FMT_MC, "ipc", "Interpaint MC (unpacked)", 0x4000, 10003, |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
959 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
960 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
1442 | 961 NULL, |
1370
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
962 NULL, NULL, |
1442 | 963 NULL, NULL, |
964 NULL, | |
1370
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
965 { |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
966 { DT_BITMAP, 0x0000, 0, 0, NULL, NULL }, |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
967 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
968 { DT_COLOR_RAM, 0x2328, 0, 0, NULL, NULL }, |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
969 { DT_COLOR_REG, 0x2710, 0, DC_BGCOL, NULL, NULL }, |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
970 { DT_LAST, 0, 0, 0, NULL, NULL }, |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
971 } |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
972 }, |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
973 |
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
974 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
975 D64_FMT_HIRES, "dd", "Doodle (unpacked)", 0x1c00, 9218, |
924
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
976 C64_SCR_WIDTH , C64_SCR_HEIGHT, |
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
977 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
1442 | 978 NULL, |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
979 NULL, NULL, |
1442 | 980 NULL, NULL, |
981 NULL, | |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
982 { |
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
983 { DT_SCREEN_RAM, 0x0000, 0, 0, NULL, NULL }, |
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
984 { DT_BITMAP, 0x0400, 0, 0, NULL, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
985 { DT_LAST, 0, 0, 0, NULL, NULL }, |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
986 } |
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
987 }, |
905 | 988 |
531
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
989 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
990 D64_FMT_MC | D64_FMT_FLI, "bml", "Blackmail FLI (unpacked)", 0x3b00, 17474, |
939
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
991 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
992 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 993 NULL, |
531
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
994 NULL, NULL, |
1442 | 995 NULL, NULL, |
996 fmtGetPixelBMFLI, | |
531
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
997 { |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
998 { DT_EXTRA_DATA, 0x0000, 0, 200, NULL, NULL }, |
531
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
999 { DT_COLOR_RAM, 0x0100, 0, 0, NULL, NULL }, |
1393
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
1000 DEF_SCREEN_RAMS_8( 0x0500, 0, 0x400) |
531
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1001 { DT_BITMAP, 0x2500, 0, 0, NULL, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1002 { DT_LAST, 0, 0, 0, NULL, NULL }, |
531
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1003 } |
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1004 }, |
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1005 |
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1006 { |
1392
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
1007 D64_FMT_MC | D64_FMT_FLI, "fli", "FLI Designer (unpacked)", 0, 17409, |
939
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
1008 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
1009 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 1010 fmtProbeFLIDesigner, |
1011 NULL, NULL, | |
1012 NULL, NULL, | |
1013 fmtGetPixelFLIDesigner, | |
531
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1014 { |
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1015 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, |
1393
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
1016 DEF_SCREEN_RAMS_8( 0x0400, 0, 0x400) |
531
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1017 { DT_BITMAP, 0x2400, 0, 0, NULL, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1018 { DT_LAST, 0, 0, 0, NULL, NULL }, |
531
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1019 } |
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1020 }, |
2ac364d0ace9
Add support for converting some FLI formats, such as Blackmail FLI and FLI Designer FLI.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1021 |
906
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
1022 { |
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
1023 D64_FMT_MC, "xx1", "Unknown $2000 format (unpacked)", 0x2000, 10242, |
939
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
1024 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
1025 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 1026 NULL, |
906
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
1027 NULL, NULL, |
1442 | 1028 NULL, NULL, |
1029 NULL, | |
906
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
1030 { |
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
1031 { DT_BITMAP, 0x0000, 0, 0, NULL, NULL }, |
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
1032 { DT_SCREEN_RAM, 0x2000, 0, 0, NULL, NULL }, |
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
1033 { DT_COLOR_RAM, 0x2400, 0, 0, NULL, NULL }, |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1034 { DT_COLOR_SET, 0x00 , 0, DC_BGCOL, NULL, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1035 { DT_LAST, 0, 0, 0, NULL, NULL }, |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1036 } |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1037 }, |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1038 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1039 #define XX2_WIDTH_CH 40 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1040 #define XX2_HEIGHT_CH 10 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1041 #define XX2_SIZE (XX2_WIDTH_CH * XX2_HEIGHT_CH) |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1042 #define XX2_BSIZE (XX2_SIZE * 8) |
924
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
1043 |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1044 { |
943
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
1045 D64_FMT_MC, "xx2", "Unknown $2000 format (unpacked)", 0x2000, 0, |
924
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
1046 XX2_WIDTH_CH * 4, XX2_HEIGHT_CH * 8, |
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
1047 XX2_WIDTH_CH , XX2_HEIGHT_CH, |
1442 | 1048 fmtProbeFormatXX2, |
1049 fmtDecodeFormatXX2, NULL, | |
1050 NULL, NULL, | |
1051 NULL, | |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1052 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1053 { DT_BITMAP, 0x0000, 0, XX2_BSIZE, NULL, NULL }, |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1054 { DT_COLOR_RAM, XX2_BSIZE + XX2_SIZE, 0, XX2_SIZE, NULL, NULL }, |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1055 { DT_SCREEN_RAM, XX2_BSIZE, 0, XX2_SIZE, NULL, NULL }, |
1382 | 1056 { DT_COLOR_SET, 11, 0, DC_BGCOL, NULL, NULL }, |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1057 { DT_LAST, 0, 0, 0, NULL, NULL }, |
906
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
1058 } |
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
1059 }, |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1060 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1061 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1062 D64_FMT_MC | D64_FMT_FLI | D64_FMT_ILACE, "fp2", "FunPaint II (unpacked)", 0x3ff0, 33694, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1063 C64_SCR_WIDTH, C64_SCR_HEIGHT, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1064 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 1065 fmtProbeFunPaint2Unpacked, |
1471
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
1066 fmtDecodeFunPaint2Unpacked, fmtEncodeStub, |
1442 | 1067 NULL, NULL, |
1068 fmtGetPixelFunPaint2, | |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1069 { |
1393
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
1070 DEF_SCREEN_RAMS_8( 0x0000, 0, 0x400) |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1071 { DT_BITMAP, 0x2000, 0, 0, NULL, NULL }, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1072 { DT_EXTRA_DATA, 0x3f40, 0, 100, NULL, NULL }, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1073 { DT_COLOR_RAM, 0x4000, 0, 0, NULL, NULL }, |
1393
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
1074 DEF_SCREEN_RAMS_8( 0x43e8, 8, 0x400) |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1075 { DT_BITMAP, 0x63e8, 1, 0, NULL, NULL }, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1076 { DT_EXTRA_DATA, 0x8328, 1, 100, NULL, NULL }, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1077 { DT_LAST, 0, 0, 0, NULL, NULL }, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1078 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1079 }, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1080 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1081 { |
1396 | 1082 D64_FMT_MC | D64_FMT_FLI | D64_FMT_ILACE, "fp2p", "FunPaint II (packed)", 0x3ff0, 0, |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1083 C64_SCR_WIDTH, C64_SCR_HEIGHT, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1084 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 1085 fmtProbeFunPaint2Packed, |
1471
a988baa5b21f
Add stub function to prevent attempts to encode formats that do not support encoding yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1469
diff
changeset
|
1086 fmtDecodeFunPaint2Packed, fmtEncodeStub, |
1442 | 1087 NULL, NULL, |
1088 fmtGetPixelFunPaint2, | |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1089 { |
1393
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
1090 DEF_SCREEN_RAMS_8( 0x0000, 0, 0x400) |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1091 { DT_BITMAP, 0x2000, 0, 0, NULL, NULL }, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1092 { DT_EXTRA_DATA, 0x3f40, 0, 100, NULL, NULL }, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1093 { DT_COLOR_RAM, 0x4000, 0, 0, NULL, NULL }, |
1393
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
1094 DEF_SCREEN_RAMS_8( 0x43e8, 8, 0x400) |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1095 { DT_BITMAP, 0x63e8, 1, 0, NULL, NULL }, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1096 { DT_EXTRA_DATA, 0x8328, 1, 100, NULL, NULL }, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1097 { DT_LAST, 0, 0, 0, NULL, NULL }, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1098 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1099 }, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1100 |
1389
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1101 { |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1102 D64_FMT_MC | D64_FMT_FLI | D64_FMT_ILACE, "gun", "GunPaint (unpacked)", 0x4000, 0, |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1103 C64_SCR_WIDTH, C64_SCR_HEIGHT, |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1104 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 1105 fmtProbeGunPaint, |
1106 NULL, NULL, | |
1107 NULL, NULL, | |
1108 fmtGetPixelGunPaint, | |
1389
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1109 { |
1393
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
1110 DEF_SCREEN_RAMS_8( 0x0000, 0, 0x400) |
1389
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1111 { DT_BITMAP, 0x2000, 0, 0, NULL, NULL }, |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1112 { DT_EXTRA_DATA, 0x3f4f, 0, 177, NULL, NULL }, |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1113 { DT_COLOR_RAM, 0x4000, 0, 0, NULL, NULL }, |
1393
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
1114 DEF_SCREEN_RAMS_8( 0x4400, 8, 0x400) |
1389
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1115 { DT_BITMAP, 0x6400, 1, 0, NULL, NULL }, |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1116 { DT_EXTRA_DATA, 0x47e8, 1, 20, NULL, NULL }, |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1117 { DT_LAST, 0, 0, 0, NULL, NULL }, |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1118 } |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1119 }, |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1120 |
1394
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1121 { |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1122 D64_FMT_HIRES | D64_FMT_FLI, "chi", "Crest Hires FLI Designer (unpacked)", 0x4000, 16386, |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1123 C64_SCR_WIDTH, 14 * 8, |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1124 C64_SCR_CH_WIDTH , 14, |
1442 | 1125 NULL, |
1394
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1126 NULL, NULL, |
1442 | 1127 NULL, NULL, |
1128 fmtGetPixelCHFLI, | |
1394
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1129 { |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1130 { DT_BITMAP, 0x0000, 0, 0, NULL, NULL }, |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1131 DEF_SCREEN_RAMS_8( 0x2000, 0, 0x400) |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1132 { DT_LAST, 0, 0, 0, NULL, NULL }, |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1133 } |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1134 }, |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1135 }; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1136 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1137 const int ndmC64ImageFormats = sizeof(dmC64ImageFormats) / sizeof(dmC64ImageFormats[0]); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1138 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1139 |
518 | 1140 // Perform probing of the given data buffer, trying to determine |
1141 // if it contains a supported "C64" image format. Returns the | |
1142 // "probe score", see libgfx.h for list of values. If a match | |
1143 // is found, pointer to format description is set to *pfmt. | |
537
32d9e67da189
Rename generic probing function to match the style of other lib64gfx functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
536
diff
changeset
|
1144 int dmC64ProbeBMP(const Uint8 *buf, const size_t len, const DMC64ImageFormat **pfmt) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1145 { |
1380 | 1146 int scoreMax = DM_PROBE_SCORE_FALSE, scoreIndex = -1; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1147 |
1380 | 1148 for (int i = 0; i < ndmC64ImageFormats; i++) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1149 { |
516 | 1150 const DMC64ImageFormat *fmt = &dmC64ImageFormats[i]; |
511
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
1151 int score = DM_PROBE_SCORE_FALSE; |
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
1152 if (fmt->probe == NULL && fmt->size > 0 && fmt->addr > 0) |
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
1153 { |
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
1154 // Generic probe just checks matching size and load address |
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
1155 if (len == fmt->size && dmCompareAddr16(buf, 0, fmt->addr)) |
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
1156 score = DM_PROBE_SCORE_GOOD; |
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
1157 } |
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
1158 else |
1134
d0898867ec4c
Various fixes for issues reported by clang static analyzer.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1159 if (fmt->probe != NULL) |
511
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
1160 score = fmt->probe(buf, len, fmt); |
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
1161 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1162 if (score > scoreMax) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1163 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1164 scoreMax = score; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1165 scoreIndex = i; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1166 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1167 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1168 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1169 if (scoreIndex >= 0) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1170 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1171 *pfmt = &dmC64ImageFormats[scoreIndex]; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1172 return scoreMax; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1173 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1174 else |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1175 return DM_PROBE_SCORE_FALSE; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1176 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1177 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1178 |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1179 static int dmC64SanityCheckEncDecOp(const int i, const DMC64EncDecOp *op, const DMC64Image *img) |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1180 { |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1181 switch (op->type) |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1182 { |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1183 case DT_COLOR_RAM: |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1184 case DT_BITMAP: |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1185 case DT_SCREEN_RAM: |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1186 case DT_CHAR_DATA: |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1187 if (op->bank < 0 || op->bank > img->nbanks) |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1188 { |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1189 return dmError(DMERR_INTERNAL, |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1190 "Invalid bank %d / %d definition in generic encode/decode operator %d @ #%d.\n", |
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1191 op->bank, img->nbanks, op->type, i); |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1192 } |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1193 break; |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1194 |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1195 case DT_EXTRA_DATA: |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1196 if (op->bank < 0 || op->bank >= C64_MAX_EXTRA_DATA) |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1197 { |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1198 return dmError(DMERR_INTERNAL, |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1199 "Invalid bank %d definition in generic encode/decode operator %d @ #%d.\n", |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1200 op->bank, op->type, i); |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1201 } |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1202 break; |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1203 } |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1204 |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1205 if (op->type < 0 || op->type >= DT_LAST) |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1206 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1207 return dmError(DMERR_INTERNAL, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1208 "Invalid encode/decode operator type %d @ #%d.\n", |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1209 op->type, i); |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1210 } |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1211 |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1212 return DMERR_OK; |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1213 } |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1214 |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1215 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1216 static BOOL dmC64GetOpSize(const DMC64EncDecOp *op, const DMC64ImageFormat *fmt, size_t *size) |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1217 { |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1218 BOOL check; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1219 switch (op->type) |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1220 { |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1221 case DT_SCREEN_RAM: |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1222 case DT_COLOR_RAM: |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1223 *size = fmt->ch_height * fmt->ch_width; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1224 check = TRUE; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1225 break; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1226 |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1227 case DT_BITMAP: |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1228 *size = fmt->ch_height * fmt->ch_width * 8; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1229 check = TRUE; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1230 break; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1231 |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1232 case DT_EXTRA_DATA: |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1233 *size = op->size; |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1234 check = TRUE; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1235 break; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1236 |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1237 case DT_CHAR_DATA: |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1238 *size = C64_MAX_CHARS * C64_CHR_SIZE; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1239 check = TRUE; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1240 break; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1241 |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1242 case DT_COLOR_REG: |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1243 *size = 1; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1244 check = FALSE; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1245 break; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1246 |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1247 default: |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1248 *size = 0; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1249 check = FALSE; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1250 } |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1251 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1252 if (op->size != 0) |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1253 { |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1254 if (check && op->size > *size) |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1255 return FALSE; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1256 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1257 *size = op->size; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1258 } |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1259 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1260 return TRUE; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1261 } |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1262 |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1263 |
410
e4b2f689aff6
Stdint -> SDL types conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
407
diff
changeset
|
1264 int dmC64DecodeGenericBMP(DMC64Image *img, const Uint8 *buf, |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1265 const size_t len, const DMC64ImageFormat *fmt) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1266 { |
1460 | 1267 int res = DMERR_OK; |
1268 | |
513 | 1269 if (buf == NULL || img == NULL || fmt == NULL) |
1270 return DMERR_NULLPTR; | |
1271 | |
925 | 1272 // Clear the image structure, set basics |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1273 img->type = fmt->type; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1274 img->width = fmt->width; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1275 img->height = fmt->height; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1276 img->ch_width = fmt->ch_width; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1277 img->ch_height = fmt->ch_height; |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1278 img->nbanks = dmC64ImageGetNumBanks(fmt); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1279 |
518 | 1280 // Perform decoding |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1281 for (int i = 0; i < D64_MAX_ENCDEC_OPS; i++) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1282 { |
515 | 1283 const DMC64EncDecOp *op = &fmt->encdecOps[i]; |
410
e4b2f689aff6
Stdint -> SDL types conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
407
diff
changeset
|
1284 const Uint8 *src; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1285 size_t size; |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1286 |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1287 // Check for last operator |
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1288 if (op->type == DT_LAST) |
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1289 break; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1290 |
811 | 1291 // Check operation validity |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1292 if ((res = dmC64SanityCheckEncDecOp(i, op, img)) != DMERR_OK) |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1293 return res; |
925 | 1294 |
811 | 1295 // Check size |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1296 if (!dmC64GetOpSize(op, fmt, &size)) |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1297 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1298 return dmError(DMERR_INVALID_DATA, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1299 "Decode op SIZE out of bounds, op #%d type=%d, offs=%d ($%04x), " |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1300 "bank=%d, size=%d ($%04x) vs. allocated %d ($%04x)\n", |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1301 i, op->type, op->offs, op->offs, op->bank, size, size, op->size, op->size); |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1302 } |
811 | 1303 |
1304 // Do we need to reallocate some more space? | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1305 if (op->offs + size > len) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1306 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1307 return dmError(DMERR_INVALID_DATA, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1308 "Decode out of bounds, op #%d type=%d, offs=%d ($%04x), " |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1309 "bank=%d, size=%d ($%04x) @ %d ($%04x)\n", |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1310 i, op->type, op->offs, op->offs, op->bank, size, size, len, len); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1311 } |
811 | 1312 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1313 src = buf + op->offs; |
811 | 1314 |
1315 // Perform operation | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1316 switch (op->type) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1317 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1318 case DT_COLOR_RAM: memcpy(img->color[op->bank], src, size); break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1319 case DT_BITMAP: memcpy(img->bitmap[op->bank], src, size); break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1320 case DT_SCREEN_RAM: memcpy(img->screen[op->bank], src, size); break; |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1321 case DT_CHAR_DATA: memcpy(img->charmem[op->bank], src, size); break; |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1322 case DT_EXTRA_DATA: |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1323 if (img->extraData[op->bank] != NULL) |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1324 { |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1325 return dmError(DMERR_INTERNAL, |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1326 "Extra data block already allocated and used! " |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1327 "op #%d, offs=%d ($%04x), bank=%d, size=%d ($%04x) @ %d ($%04x)\n", |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1328 i, op->offs, op->offs, op->bank, size, size, len, len); |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1329 } |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1330 if ((img->extraData[op->bank] = dmMalloc0(size)) == NULL) |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1331 { |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1332 return dmError(DMERR_MALLOC, |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1333 "Could not allocate extradata block! " |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1334 "op #%d, offs=%d ($%04x), bank=%d, size=%d ($%04x) @ %d ($%04x)\n", |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1335 i, op->offs, op->offs, op->bank, size, size, len, len); |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1336 } |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1337 img->extraDataSizes[op->bank] = size; |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1338 memcpy(img->extraData[op->bank], src, size); |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1339 break; |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1340 |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1341 case DT_COLOR_REG: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1342 switch (op->size) |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1343 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1344 case DC_D020: img->d020 = *src; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1345 case DC_BGCOL: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1346 case DC_D021: img->bgcolor = *src; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1347 case DC_D022: img->d022 = *src; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1348 case DC_D023: img->d023 = *src; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1349 case DC_D024: img->d024 = *src; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1350 default: |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1351 return dmError(DMERR_INTERNAL, |
1371 | 1352 "Unhandled DT_COLOR_REG mode %d in " |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1353 "op #%d, offs=%d ($%04x), bank=%d, size=%d ($%04x) @ %d ($%04x)\n", |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1354 op->size, i, op->offs, op->offs, op->bank, size, size, len, len); |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1355 } |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1356 break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1357 |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1358 case DT_COLOR_SET: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1359 switch (op->size) |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1360 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1361 case DC_D020: img->d020 = op->offs; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1362 case DC_BGCOL: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1363 case DC_D021: img->bgcolor = op->offs; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1364 case DC_D022: img->d022 = op->offs; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1365 case DC_D023: img->d023 = op->offs; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1366 case DC_D024: img->d024 = op->offs; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1367 default: |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1368 return dmError(DMERR_INTERNAL, |
1371 | 1369 "Unhandled DT_COLOR_SET mode %d in " |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1370 "op #%d, offs=%d ($%04x), bank=%d, size=%d ($%04x) @ %d ($%04x)\n", |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1371 op->size, i, op->offs, op->offs, op->bank, size, size, len, len); |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1372 } |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1373 break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1374 |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1375 case DT_CHAR_CONFIG: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1376 switch (op->offs) |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1377 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1378 case D64_CHCFG_SCREEN: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1379 break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1380 |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1381 case D64_CHCFG_LINEAR: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1382 { |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1383 for (int bank = 0; bank < img->nbanks; bank++) |
1371 | 1384 for (int offs = 0; offs < fmt->ch_height * fmt->ch_width; offs++) |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1385 img->screen[bank][offs] = offs & 0xff; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1386 } |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1387 break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1388 |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1389 default: |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1390 return dmError(DMERR_INTERNAL, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1391 "Unhandled DT_CHAR_CONFIG mode %d in ", |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1392 "op #%d, bank=%d, size=%d ($%04x) @ %d ($%04x)\n", |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1393 op->offs, i, op->bank, size, size, len, len); |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1394 } |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1395 break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1396 |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1397 case DT_DEC_FUNCTION: |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1398 if (op->decfunction == NULL) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1399 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1400 return dmError(DMERR_INTERNAL, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1401 "Decode op is a function, but function ptr is NULL: " |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1402 "op #%d, offs=%d ($%04x), bank=%d, size=%d ($%04x) @ %d ($%04x)\n", |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1403 i, op->offs, op->offs, op->bank, size, size, len, len); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1404 } |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1405 if (!op->decfunction(img, op, buf, len)) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1406 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1407 return dmError(DMERR_INTERNAL, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1408 "Decode op custom function failed: op #%d, " |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1409 "offs=%d ($%04x), bank=%d, size=%d ($%04x) @ %d ($%04x)\n", |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1410 i, op->offs, op->offs, op->bank, size, size, len, len); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1411 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1412 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1413 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1414 } |
916 | 1415 |
508
1ed5025c2538
Return DMLIB error values instead of arbitrary 0/negatives.
Matti Hamalainen <ccr@tnsp.org>
parents:
507
diff
changeset
|
1416 return DMERR_OK; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1417 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1418 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1419 |
1465
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1420 int dmC64EncodeGenericBMP(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt) |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1421 { |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1422 int res = DMERR_OK; |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1423 |
1469
0046b4e1b35f
Various fixes in bmp encoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1467
diff
changeset
|
1424 if (img == NULL || fmt == NULL) |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1425 return DMERR_NULLPTR; |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1426 |
1472
b9d3577d8290
Improve error handling and checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1471
diff
changeset
|
1427 // Sanity check img vs format |
b9d3577d8290
Improve error handling and checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1471
diff
changeset
|
1428 if (img->type != fmt->type || |
b9d3577d8290
Improve error handling and checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1471
diff
changeset
|
1429 img->width != fmt->width || img->height != fmt->height) |
b9d3577d8290
Improve error handling and checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1471
diff
changeset
|
1430 { |
b9d3577d8290
Improve error handling and checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1471
diff
changeset
|
1431 res = dmError(DMERR_NOT_SUPPORTED, |
b9d3577d8290
Improve error handling and checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1471
diff
changeset
|
1432 "Can't directly encode a differing C64 bitmap image format.\n"); |
b9d3577d8290
Improve error handling and checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1471
diff
changeset
|
1433 goto err; |
b9d3577d8290
Improve error handling and checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1471
diff
changeset
|
1434 } |
b9d3577d8290
Improve error handling and checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1471
diff
changeset
|
1435 |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1436 // Allocate the output buffer |
1465
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1437 if ((res = dmGrowBufAlloc(buf, fmt->size, BUF_SIZE_GROW)) != DMERR_OK) |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1438 { |
1472
b9d3577d8290
Improve error handling and checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1471
diff
changeset
|
1439 dmError(res, |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1440 "Could not allocate %d bytes of memory for C64 image encoding buffer.\n", |
1465
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1441 fmt->size); |
1447 | 1442 goto err; |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1443 } |
1469
0046b4e1b35f
Various fixes in bmp encoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1467
diff
changeset
|
1444 buf->len = fmt->size; |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1445 |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1446 // Perform encoding |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1447 for (int i = 0; i < D64_MAX_ENCDEC_OPS; i++) |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1448 { |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1449 const DMC64EncDecOp *op = &fmt->encdecOps[i]; |
1364 | 1450 size_t size, chksize; |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1451 |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1452 // Check for last operator |
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1453 if (op->type == DT_LAST) |
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1454 break; |
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1455 |
811 | 1456 // Check operation validity |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1457 if ((res = dmC64SanityCheckEncDecOp(i, op, img)) != DMERR_OK) |
1447 | 1458 goto err; |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1459 |
811 | 1460 // Check size |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1461 if (!dmC64GetOpSize(op, fmt, &size)) |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1462 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1463 res = dmError(DMERR_INVALID_DATA, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1464 "Decode op SIZE out of bounds, op #%d type=%d, offs=%d ($%04x), " |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1465 "bank=%d, size=%d ($%04x) vs. allocated %d ($%04x)\n", |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1466 i, op->type, op->offs, op->offs, op->bank, size, size, op->size, op->size); |
1447 | 1467 goto err; |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1468 } |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1469 |
811 | 1470 // Do we need to reallocate some more space? |
1448
50402c225ef4
Do not insert load address to the buffer beginning in dmC64EncodeGenericBMP().
Matti Hamalainen <ccr@tnsp.org>
parents:
1447
diff
changeset
|
1471 chksize = op->offs + size; |
1465
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1472 if (!dmGrowBufCheckGrow(buf, chksize)) |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1473 { |
1465
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1474 res = dmError(DMERR_MALLOC, |
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1475 "Could not re-allocate %d bytes of memory for C64 image encoding buffer.\n", |
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1476 chksize); |
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1477 goto err; |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1478 } |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1479 |
1465
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1480 if (fmt->size == 0 && chksize > buf->len) |
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1481 buf->len = chksize; |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1482 |
811 | 1483 // Perform operation |
1465
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1484 Uint8 *dst = buf->data + op->offs; |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1485 switch (op->type) |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1486 { |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1487 case DT_COLOR_RAM: memcpy(dst, img->color[op->bank], size); break; |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1488 case DT_BITMAP: memcpy(dst, img->bitmap[op->bank], size); break; |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1489 case DT_SCREEN_RAM: memcpy(dst, img->screen[op->bank], size); break; |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1490 case DT_CHAR_DATA: memcpy(dst, img->charmem[op->bank], size); break; |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1491 case DT_EXTRA_DATA: |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1492 if (img->extraData[op->bank] == NULL) |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1493 { |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1494 res = dmError(DMERR_NULLPTR, |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1495 "DT_EXTRA_DATA block is NULL in ", |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1496 "op #%d, offs=%d ($%04x), bank=%d, size=%d ($%04x) @ %d ($%04x)\n", |
1465
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1497 i, op->offs, op->offs, op->bank, size, size, buf->len, buf->len); |
1447 | 1498 goto err; |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1499 } |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1500 if (size > img->extraDataSizes[op->bank]) |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1501 { |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1502 res = dmError(DMERR_INTERNAL, |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1503 "DT_EXTRA_DATA size mismatch %d <> %d in ", |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1504 "op #%d, offs=%d ($%04x), bank=%d, size=%d ($%04x) @ %d ($%04x)\n", |
1465
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1505 op->size, img->extraDataSizes[op->bank], i, op->offs, op->offs, op->bank, size, size, buf->len, buf->len); |
1447 | 1506 goto err; |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1507 } |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1508 memcpy(dst, img->extraData[op->bank], size); |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1509 break; |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1510 |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1511 case DT_COLOR_REG: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1512 switch (op->size) |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1513 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1514 case DC_D020: *dst = img->d020; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1515 case DC_BGCOL: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1516 case DC_D021: *dst = img->bgcolor; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1517 case DC_D022: *dst = img->d022; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1518 case DC_D023: *dst = img->d023; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1519 case DC_D024: *dst = img->d024; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1520 default: |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1521 res = dmError(DMERR_INTERNAL, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1522 "Unhandled DT_COLOR_REG mode %d in ", |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1523 "op #%d, offs=%d ($%04x), bank=%d, size=%d ($%04x) @ %d ($%04x)\n", |
1465
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1524 op->size, i, op->offs, op->offs, op->bank, size, size, buf->len, buf->len); |
1447 | 1525 goto err; |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1526 } |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1527 break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1528 |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1529 case DT_ENC_FUNCTION: |
904
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1530 if (op->encfunction == NULL) |
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1531 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1532 res = dmError(DMERR_INTERNAL, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1533 "Encode op is a function, but function ptr is NULL: " |
904
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1534 "op #%d, offs=%d ($%04x), bank=%d, size=%d ($%04x) @ %d ($%04x)\n", |
1465
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1463
diff
changeset
|
1535 i, op->offs, op->offs, op->bank, size, size, buf->len, buf->len); |
1447 | 1536 goto err; |
904
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1537 } |
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1538 /* |
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1539 if (!op->encfunction(op, buf, len)) |
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1540 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1541 res = dmError(DMERR_INTERNAL, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1542 "Encode op custom function failed: op #%d, " |
904
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1543 "offs=%d ($%04x), bank=%d, size=%d ($%04x) @ %d ($%04x)\n", |
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1544 i, op->offs, op->offs, op->bank, size, size, len, len); |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1545 goto out; |
904
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1546 } |
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1547 */ |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1548 break; |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1549 } |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1550 } |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1551 |
1448
50402c225ef4
Do not insert load address to the buffer beginning in dmC64EncodeGenericBMP().
Matti Hamalainen <ccr@tnsp.org>
parents:
1447
diff
changeset
|
1552 res = DMERR_OK; |
535
ab8d9696225c
Add helper macros and use them to set the loading address while encoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
534
diff
changeset
|
1553 |
1447 | 1554 err: |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1555 return res; |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1556 } |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1557 |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1558 |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1559 // Convert a generic "C64" format bitmap in DMC64Image struct to |
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1560 // a indexed/paletted bitmap image. |
1375
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1561 int dmC64ConvertGenericBMP2Image(DMImage *dst, const DMC64Image *src, const DMC64ImageFormat *fmt) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1562 { |
1375
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1563 DMC64GetPixelFunc getPixel; |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1564 |
556
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1565 // Sanity check arguments |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1566 if (dst == NULL || src == NULL) |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1567 return DMERR_NULLPTR; |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1568 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1569 if (dst->width < src->width || dst->height < src->height) |
1460 | 1570 { |
1571 return dmError(DMERR_INVALID_DATA, | |
1572 "Invalid src vs. dst width/height %d x %d <-> %d x %d\n", | |
1573 src->width, src->height, dst->width, dst->height); | |
1574 } | |
556
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1575 |
1167 | 1576 dmMemset(dst->data, 0, dst->size); |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1577 |
1375
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1578 // Check pixel getter function |
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1579 if (fmt->getPixel != NULL) |
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1580 getPixel = fmt->getPixel; |
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1581 else |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
1582 getPixel = (fmt->type & D64_FMT_MC) ? fmtGetGenericMCPixel : fmtGetGenericSCPixel; |
1375
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1583 |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1584 // Resolution interlaced pics need to halve the source width |
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1585 int rwidth = src->width; |
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1586 if ((src->type & D64_FMT_ILACE) && src->laceType == D64_ILACE_RES) |
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1587 rwidth /= 2; |
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1588 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1589 // Perform conversion |
1411 | 1590 Uint8 *dp = dst->data; |
1591 for (int yc = 0; yc < src->height; yc++) | |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1592 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1593 Uint8 *d = dp; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1594 const int y = yc / 8, yb = yc & 7; |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1595 const int scroffsy = y * src->ch_width; |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1596 int xc; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1597 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1598 if (src->type & D64_FMT_CHAR) |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1599 { |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1600 // Charmode conversion |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1601 if ((src->type & D64_FMT_MC) == D64_FMT_HIRES) |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1602 // Hi-res charmap |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1603 for (xc = 0; xc < rwidth; xc++) |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1604 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1605 const int x = xc / 8; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1606 const int scroffs = scroffsy + x; |
918 | 1607 const int chr = src->screen[0][scroffs]; |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1608 const int v = 7 - (xc & 7); |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1609 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1610 if ((src->charmem[0][chr * C64_CHR_SIZE + yb] >> v) & 1) |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1611 *d++ = src->color[0][scroffs]; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1612 else |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1613 *d++ = src->bgcolor; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1614 } |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1615 else |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1616 // Multicolor variants |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1617 for (xc = 0; xc < rwidth; xc++) |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1618 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1619 const int x = xc / 4; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1620 const int scroffs = scroffsy + x; |
918 | 1621 const int chr = src->screen[0][scroffs]; |
944
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1622 const int col = src->color[0][scroffs] & 15; |
925 | 1623 |
944
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1624 if (col & 8) |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1625 { |
944
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1626 const int v = 6 - ((xc * 2) & 6); |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1627 switch ((src->charmem[0][chr * C64_CHR_SIZE + yb] >> v) & 3) |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1628 { |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1629 case 0: *d++ = src->bgcolor; break; |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1630 case 1: *d++ = src->d022; break; |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1631 case 2: *d++ = src->d023; break; |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1632 case 3: *d++ = col; |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1633 } |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1634 } |
944
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1635 else |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1636 { |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1637 const int v = 7 - (xc & 7); |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1638 if ((src->charmem[0][chr * C64_CHR_SIZE + yb] >> v) & 1) |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1639 *d++ = src->color[0][scroffs]; |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1640 else |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1641 *d++ = src->bgcolor; |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1642 } |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1643 } |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1644 } |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1645 else |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1646 { |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1647 // Perform generic BITMAP conversion |
940
ff18d2511843
Remove the doubleMC madness completely. Should be replaced with x/y aspect
Matti Hamalainen <ccr@tnsp.org>
parents:
939
diff
changeset
|
1648 const int bmoffsy = y * src->ch_width * 8 + yb; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1649 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1650 if ((src->type & D64_FMT_MC) == D64_FMT_HIRES) |
811 | 1651 // Hi-res bitmap |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1652 for (xc = 0; xc < rwidth; xc++) |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1653 { |
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1654 const int x = xc / 8; |
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1655 const int scroffs = scroffsy + x; |
940
ff18d2511843
Remove the doubleMC madness completely. Should be replaced with x/y aspect
Matti Hamalainen <ccr@tnsp.org>
parents:
939
diff
changeset
|
1656 const int bmoffs = bmoffsy + (x * 8); |
1375
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1657 const int vshift = 7 - (xc & 7); |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1658 |
1387
14d79e4d82cf
Oops, 100L. Had forgotten to change singlecolor mode handling pixel getter
Matti Hamalainen <ccr@tnsp.org>
parents:
1385
diff
changeset
|
1659 *d++ = getPixel(src, bmoffs, scroffs, vshift, 0, yc); |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1660 } |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1661 else |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1662 // Multicolor bitmap and variants |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1663 for (xc = 0; xc < rwidth; xc++) |
529
1bce06b5026f
Combine conversion of interlaced and normal multicolor images to one function.
Matti Hamalainen <ccr@tnsp.org>
parents:
528
diff
changeset
|
1664 { |
901
f532262f90b1
Actually fix commit 16aa5955dfb5.
Matti Hamalainen <ccr@tnsp.org>
parents:
857
diff
changeset
|
1665 const int x = xc / 4; |
f532262f90b1
Actually fix commit 16aa5955dfb5.
Matti Hamalainen <ccr@tnsp.org>
parents:
857
diff
changeset
|
1666 const int scroffs = scroffsy + x; |
940
ff18d2511843
Remove the doubleMC madness completely. Should be replaced with x/y aspect
Matti Hamalainen <ccr@tnsp.org>
parents:
939
diff
changeset
|
1667 const int bmoffs = bmoffsy + (x * 8); |
1375
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1668 const int vshift = 6 - ((xc * 2) & 6); |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1669 |
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1670 if (src->type & D64_FMT_ILACE) |
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1671 { |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1672 switch (src->laceType) |
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1673 { |
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1674 case D64_ILACE_RES: |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
1675 *d++ = getPixel(src, bmoffs, scroffs, vshift, 0, yc); |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
1676 *d++ = getPixel(src, bmoffs, scroffs, vshift, 1, yc); |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1677 break; |
1366
d4387509a363
Return DMERR_NOT_SUPPORTED for decoding color-interlaced images, for now
Matti Hamalainen <ccr@tnsp.org>
parents:
1365
diff
changeset
|
1678 |
d4387509a363
Return DMERR_NOT_SUPPORTED for decoding color-interlaced images, for now
Matti Hamalainen <ccr@tnsp.org>
parents:
1365
diff
changeset
|
1679 default: |
d4387509a363
Return DMERR_NOT_SUPPORTED for decoding color-interlaced images, for now
Matti Hamalainen <ccr@tnsp.org>
parents:
1365
diff
changeset
|
1680 return DMERR_NOT_SUPPORTED; |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1681 } |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1682 } |
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1683 else |
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1684 { |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
1685 *d++ = getPixel(src, bmoffs, scroffs, vshift, 0, yc); |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1686 } |
529
1bce06b5026f
Combine conversion of interlaced and normal multicolor images to one function.
Matti Hamalainen <ccr@tnsp.org>
parents:
528
diff
changeset
|
1687 } |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1688 } |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1689 dp += dst->pitch; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1690 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1691 |
508
1ed5025c2538
Return DMLIB error values instead of arbitrary 0/negatives.
Matti Hamalainen <ccr@tnsp.org>
parents:
507
diff
changeset
|
1692 return DMERR_OK; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1693 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1694 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1695 |
940
ff18d2511843
Remove the doubleMC madness completely. Should be replaced with x/y aspect
Matti Hamalainen <ccr@tnsp.org>
parents:
939
diff
changeset
|
1696 int dmC64ConvertBMP2Image(DMImage **pdst, const DMC64Image *src, const DMC64ImageFormat *fmt) |
556
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1697 { |
940
ff18d2511843
Remove the doubleMC madness completely. Should be replaced with x/y aspect
Matti Hamalainen <ccr@tnsp.org>
parents:
939
diff
changeset
|
1698 int res; |
556
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1699 DMImage *dst; |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1700 |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1701 if (pdst == NULL || src == NULL) |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1702 return DMERR_NULLPTR; |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1703 |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1704 // Allocate image structure |
1289 | 1705 if ((*pdst = dst = dmImageAlloc(src->width, src->height, DM_IFMT_PALETTE, -1)) == NULL) |
556
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1706 return DMERR_MALLOC; |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1707 |
1426
4c7b456d7f0b
Rename global dmC64Palette to dmDefaultC64Palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
1425
diff
changeset
|
1708 // Set partial palette information |
556
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1709 dst->ncolors = C64_NCOLORS; |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1710 dst->constpal = TRUE; |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1711 |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1712 // Convert |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1713 if (fmt->convertFrom != NULL) |
1375
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1714 res = fmt->convertFrom(dst, src, fmt); |
556
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1715 else |
1375
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1716 res = dmC64ConvertGenericBMP2Image(dst, src, fmt); |
556
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1717 |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1718 return res; |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1719 } |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1720 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1721 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1722 int dmC64DecodeBMP(DMC64Image **img, const Uint8 *buf, const size_t len, |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1723 const size_t probeOffs, const size_t loadOffs, |
516 | 1724 const DMC64ImageFormat **fmt, const DMC64ImageFormat *forced) |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1725 { |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1726 if (img == NULL) |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1727 return DMERR_NULLPTR; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1728 |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1729 // Check for forced format |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1730 if (forced != NULL) |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1731 *fmt = forced; |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1732 else |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1733 { |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1734 // Nope, perform a generic probe |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1735 if (probeOffs >= len) |
1460 | 1736 return DMERR_OUT_OF_DATA; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1737 |
537
32d9e67da189
Rename generic probing function to match the style of other lib64gfx functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
536
diff
changeset
|
1738 if (dmC64ProbeBMP(buf + probeOffs, len - probeOffs, fmt) == DM_PROBE_SCORE_FALSE) |
1460 | 1739 return DMERR_NOT_SUPPORTED; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1740 } |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1741 |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1742 if (loadOffs >= len) |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1743 return DMERR_INVALID_ARGS; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1744 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1745 if (*fmt == NULL) |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1746 return DMERR_INVALID_DATA; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1747 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1748 // Allocate memory |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1749 if ((*img = dmC64ImageAlloc(*fmt)) == NULL) |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1750 return DMERR_MALLOC; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1751 |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1752 // Decode the bitmap to memory layout |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1753 if ((*fmt)->decode != NULL) |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1754 return (*fmt)->decode(*img, buf + loadOffs, len - loadOffs, *fmt); |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1755 else |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1756 return dmC64DecodeGenericBMP(*img, buf + loadOffs, len - loadOffs, *fmt); |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1757 } |
1467
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1758 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1759 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1760 // Convert a generic bitmap image to DMC64Image |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1761 int dmC64ConvertGenericImage2BMP(DMC64Image *dst, const DMImage *src, const DMC64ImageFormat *fmt) |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1762 { |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1763 if (dst == NULL || src == NULL || fmt == NULL) |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1764 return DMERR_NULLPTR; |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1765 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1766 return DMERR_OK; |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1767 } |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1768 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1769 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1770 int dmC64ConvertImage2BMP(DMC64Image **pdst, const DMImage *src, const DMC64ImageFormat *fmt) |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1771 { |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1772 int res; |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1773 DMC64Image *dst; |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1774 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1775 if (pdst == NULL || src == NULL) |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1776 return DMERR_NULLPTR; |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1777 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1778 // Allocate the basic C64 bitmap image structure |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1779 if ((*pdst = dst = dmC64ImageAlloc(fmt)) == NULL) |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1780 return DMERR_MALLOC; |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1781 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1782 // Convert |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1783 if (fmt->convertTo != NULL) |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1784 res = fmt->convertTo(dst, src, fmt); |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1785 else |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1786 res = dmC64ConvertGenericImage2BMP(dst, src, fmt); |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1787 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1788 return res; |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1789 } |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1790 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1791 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1792 int dmC64EncodeBMP(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt) |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1793 { |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1794 int res; |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1795 |
1472
b9d3577d8290
Improve error handling and checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1471
diff
changeset
|
1796 if (img == NULL || fmt == NULL) |
1467
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1797 return DMERR_NULLPTR; |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1798 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1799 // Attempt to encode the image to a buffer |
1472
b9d3577d8290
Improve error handling and checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1471
diff
changeset
|
1800 if ((res = dmGrowBufInit(buf)) != DMERR_OK) |
b9d3577d8290
Improve error handling and checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1471
diff
changeset
|
1801 return res; |
b9d3577d8290
Improve error handling and checking.
Matti Hamalainen <ccr@tnsp.org>
parents:
1471
diff
changeset
|
1802 |
1467
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1803 if (fmt->encode != NULL) |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1804 res = fmt->encode(buf, img, fmt); |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1805 else |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1806 res = dmC64EncodeGenericBMP(buf, img, fmt); |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1807 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1808 if (res != DMERR_OK) |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1809 goto err; |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1810 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1811 // Add the loading address |
1469
0046b4e1b35f
Various fixes in bmp encoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1467
diff
changeset
|
1812 if (!dmGrowBufGrow(buf, 2)) |
0046b4e1b35f
Various fixes in bmp encoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1467
diff
changeset
|
1813 { |
0046b4e1b35f
Various fixes in bmp encoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1467
diff
changeset
|
1814 res = DMERR_MALLOC; |
1467
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1815 goto err; |
1469
0046b4e1b35f
Various fixes in bmp encoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1467
diff
changeset
|
1816 } |
1467
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1817 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1818 memmove(buf->data + 2, buf->data, buf->len); |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1819 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1820 buf->data[0] = DM_GET_ADDR_LO(fmt->addr); |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1821 buf->data[1] = DM_GET_ADDR_HI(fmt->addr); |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1822 |
1469
0046b4e1b35f
Various fixes in bmp encoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
1467
diff
changeset
|
1823 return DMERR_OK; |
1467
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1824 |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1825 err: |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1826 dmGrowBufFree(buf); |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1827 return res; |
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1466
diff
changeset
|
1828 } |