Mercurial > hg > dmlib
annotate tools/lib64gfx.c @ 1466:bc75be0546fc
More work on RLE decoder/encoder changes.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 10 May 2018 21:46:50 +0300 |
parents | 88845f95e791 |
children | 32203356c652 |
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) |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
234 { |
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
235 dmError(res, |
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
236 "Could not allocate RLE decoding buffer.\n"); |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
237 goto err; |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
238 } |
925 | 239 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
240 // Perform RLE decode |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
241 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
|
242 { |
1412
c386d287fa1e
Use Uint8 instead of int in the rle decoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1411
diff
changeset
|
243 Uint8 c = *src++; |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
244 int cnt = 1; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
245 |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
246 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
|
247 { |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
248 case DM_RLE_MARKER: |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
249 if (c == rleMarker) |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
250 { |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
251 if (srcEnd - src < 2) |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
252 { |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
253 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
|
254 goto err; |
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 cnt = *src++; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
257 c = *src++; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
258 } |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
259 break; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
260 |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
261 case DM_RLE_MASK: |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
262 if ((c & rleMask1) == rleMarker) |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
263 { |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
264 if (srcEnd - src < 1) |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
265 { |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
266 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
|
267 goto err; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
268 } |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
269 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
270 // XXX TODO actually we probably want another mask here |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
271 cnt = c & rleMask2; |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
272 c = *src++; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
273 } |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
274 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
|
275 } |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
276 |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
277 while (cnt--) |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
278 { |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
279 if (!dmGrowBufPutU8(dst, c)) |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
280 { |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
281 res = DMERR_MALLOC; |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
282 goto err; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
283 } |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
284 } |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
285 } |
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 // Reallocate the memory |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
288 if ((res = dmGrowBufResize(dst)) != DMERR_OK) |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
289 goto err; |
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 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
|
292 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
293 err: |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
294 return res; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
295 } |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
296 |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
297 |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
298 static int dmEncodeGenericRLE(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
|
299 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
|
300 { |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
301 (void) dst; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
302 (void) src; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
303 (void) srcEnd; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
304 (void) rleMarker; |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
305 (void) rleMask1; |
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
306 (void) rleMask2; |
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
307 (void) rleType; |
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
308 |
523
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
309 return DMERR_OK; |
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
310 } |
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
311 |
519 | 312 |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
313 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
|
314 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
|
315 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
|
316 { |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
317 (void) cbank; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
318 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
|
319 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
|
320 else |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
321 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
|
322 } |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
323 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
324 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
325 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
|
326 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
|
327 const int vshift, const int vbank, const int vbitmap, const int cbank) |
1369 | 328 { |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
329 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
|
330 { |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
331 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
|
332 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
|
333 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
|
334 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
|
335 } |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
336 } |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
337 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
338 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
339 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
|
340 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
|
341 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
|
342 { |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
343 (void) raster; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
344 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
|
345 } |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
346 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
347 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
348 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
|
349 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
|
350 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
|
351 { |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
352 (void) raster; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
353 return dmC64GetGenericMCPixel(img, bmoffs, scroffs, vshift, 0, vbitmap, 0); |
1369 | 354 } |
355 | |
356 | |
357 static int fmtProbeDrazPaint20Packed(const Uint8 *buf, const size_t len, const DMC64ImageFormat *fmt) | |
358 { | |
359 const char *ident = (const char *) buf + 2; | |
360 | |
361 if (len > 22 && | |
362 dmCompareAddr16(buf, 0, fmt->addr) && | |
363 strncmp(ident, "DRAZPAINT ", 10) == 0 && | |
364 ident[11] == '.' && ( | |
365 (ident[10] == '1' && ident[12] == '4') || | |
366 (ident[10] == '2' && ident[12] == '0') | |
367 )) | |
368 return DM_PROBE_SCORE_MAX; | |
369 | |
370 return DM_PROBE_SCORE_FALSE; | |
371 } | |
372 | |
373 | |
523
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
374 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
|
375 { |
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
376 int res; |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
377 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
|
378 |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
379 if ((res = dmDecodeGenericRLE(&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
|
380 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
|
381 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
382 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
|
383 |
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
384 out: |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
385 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
|
386 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
|
387 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
388 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
389 |
511
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
390 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
|
391 { |
511
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
392 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
|
393 dmCompareAddr16(buf, 0, fmt->addr) && |
1382 | 394 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
|
395 return DM_PROBE_SCORE_MAX; |
925 | 396 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
397 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
|
398 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
399 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
400 |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
401 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
|
402 { |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
403 (void) len; |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
404 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
|
405 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
|
406 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
407 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
408 |
1389
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
409 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
|
410 { |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
411 if (len > 0x400 && |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
412 dmCompareAddr16(buf, 0, fmt->addr) && |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
413 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
|
414 return DM_PROBE_SCORE_MAX; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
415 |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
416 return DM_PROBE_SCORE_FALSE; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
417 } |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
418 |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
419 |
511
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
420 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
|
421 { |
541
7ca6abbbbb40
Use size_t instead of int here to avoid signedness issues.
Matti Hamalainen <ccr@tnsp.org>
parents:
540
diff
changeset
|
422 size_t i, n; |
1433 | 423 |
1392
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
424 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
|
425 return DM_PROBE_SCORE_FALSE; |
925 | 426 |
494
abb112ac9916
Prevent false positive probes of certain Interpaint files as Amica Paint
Matti Hamalainen <ccr@tnsp.org>
parents:
468
diff
changeset
|
427 // 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
|
428 // as do some GunPaint images .. |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
429 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
|
430 return DM_PROBE_SCORE_FALSE; |
925 | 431 |
533
91e2d0d74e2f
Adjust packed Amica paint format probe function to return less false
Matti Hamalainen <ccr@tnsp.org>
parents:
532
diff
changeset
|
432 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
|
433 if (buf[i] == 0xC2) n++; |
925 | 434 |
533
91e2d0d74e2f
Adjust packed Amica paint format probe function to return less false
Matti Hamalainen <ccr@tnsp.org>
parents:
532
diff
changeset
|
435 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
|
436 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
|
437 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
|
438 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
|
439 if (n > 10) |
91e2d0d74e2f
Adjust packed Amica paint format probe function to return less false
Matti Hamalainen <ccr@tnsp.org>
parents:
532
diff
changeset
|
440 return DM_PROBE_SCORE_MAYBE; |
1369 | 441 |
533
91e2d0d74e2f
Adjust packed Amica paint format probe function to return less false
Matti Hamalainen <ccr@tnsp.org>
parents:
532
diff
changeset
|
442 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
|
443 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
444 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
445 |
410
e4b2f689aff6
Stdint -> SDL types conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
407
diff
changeset
|
446 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
|
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 int res; |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
449 DMGrowBuf mem, tmp; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
450 |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
451 // 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
|
452 // 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
|
453 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
|
454 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
|
455 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
456 tmp.len = len; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
457 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
|
458 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
|
459 |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
460 // 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
|
461 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
|
462 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
|
463 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
464 // 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
|
465 res = dmC64DecodeGenericBMP(img, mem.data, mem.len, fmt); |
925 | 466 |
523
d0c0c6baeb57
Split the RLE decoding from DrazPaint/Lace and Amica paint decoders to a
Matti Hamalainen <ccr@tnsp.org>
parents:
519
diff
changeset
|
467 out: |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
468 dmGrowBufFree(&tmp); |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
469 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
|
470 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
|
471 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
472 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
473 |
1392
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
474 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
|
475 { |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
476 if (len == fmt->size && |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
477 (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
|
478 return DM_PROBE_SCORE_MAX; |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
479 |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
480 return DM_PROBE_SCORE_FALSE; |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
481 } |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
482 |
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
483 |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
484 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
|
485 { |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
486 (void) op; |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
487 (void) buf; |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
488 (void) len; |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
489 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
|
490 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
|
491 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
492 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
493 |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
494 static Uint8 fmtGetPixelTruePaint( |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
495 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
|
496 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
|
497 { |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
498 (void) raster; |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
499 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
|
500 } |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
501 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
502 |
1369 | 503 #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
|
504 |
943
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
505 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
|
506 { |
1369 | 507 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
|
508 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
|
509 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
|
510 |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
511 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
|
512 } |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
513 |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
514 |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
515 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
|
516 { |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
517 int res; |
1377 | 518 |
1369 | 519 // If there is only data for less than XX2_MIN_SIZE bytes, |
520 // allocate a buffer of that size and copy data there. | |
521 // Otherwise allocate len bytes. | |
522 size_t nlen = len < XX2_MIN_SIZE ? XX2_MIN_SIZE : len; | |
523 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
|
524 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
|
525 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
|
526 |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
527 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
|
528 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
|
529 |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
530 dmFree(mem); |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
531 return res; |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
532 } |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
533 |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
534 |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
535 #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
|
536 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
537 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
|
538 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
539 return |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
540 len > 30 && |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
541 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
|
542 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
|
543 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
544 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
545 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
546 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
|
547 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
548 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
|
549 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
|
550 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
|
551 else |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
552 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
|
553 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
554 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
555 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
556 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
|
557 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
558 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
|
559 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
|
560 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
|
561 else |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
562 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
|
563 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
564 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
565 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
566 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
|
567 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
568 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
|
569 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
570 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
571 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
572 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
|
573 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
574 int res; |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
575 DMGrowBuf mem; |
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
576 dmGrowBufInit(&mem); |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
577 |
1466
bc75be0546fc
More work on RLE decoder/encoder changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
578 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
|
579 goto out; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
580 |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
581 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
|
582 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
583 out: |
1463
bde6a66bc2f6
Change dmDecodeGenericRLE() to use DMGrowBuf as output. Also add support
Matti Hamalainen <ccr@tnsp.org>
parents:
1462
diff
changeset
|
584 dmGrowBufFree(&mem); |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
585 return res; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
586 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
587 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
588 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
589 static Uint8 fmtGetPixelFunPaint2( |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
590 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
|
591 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
|
592 { |
1390 | 593 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
|
594 int vr, vb; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
595 if (raster < 100) |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
596 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
597 vb = 0; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
598 vr = raster; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
599 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
600 else |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
601 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
602 vb = 0; |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
603 vr = raster - 100; |
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 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
606 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
|
607 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
608 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
|
609 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
|
610 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
|
611 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
|
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 |
1389
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
616 static Uint8 fmtGetPixelGunPaint( |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
617 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
|
618 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
|
619 { |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
620 const int vbank = (raster & 7);// + (vbitmap * 8); |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
621 int vr, vb; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
622 if (raster < 177) |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
623 { |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
624 vb = 0; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
625 vr = raster; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
626 } |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
627 else |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
628 { |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
629 vb = 0; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
630 vr = raster - 177; |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
631 } |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
632 |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
633 switch ((img->bitmap[vbitmap][bmoffs] >> vshift) & 3) |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
634 { |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
635 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
|
636 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
|
637 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
|
638 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
|
639 } |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
640 } |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
641 |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
642 |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
643 static Uint8 fmtGetPixelBMFLI( |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
644 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
|
645 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
|
646 { |
1380 | 647 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
|
648 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
|
649 { |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
650 case 0: return img->extraData[0][raster]; break; |
1380 | 651 case 1: return img->screen[vbank][scroffs] >> 4; break; |
652 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
|
653 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
|
654 } |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
655 } |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
656 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
657 |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
658 static Uint8 fmtGetPixelFLIDesigner( |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
659 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
|
660 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
|
661 { |
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
662 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
|
663 } |
943
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
664 |
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
665 |
1394
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
666 static Uint8 fmtGetPixelCHFLI( |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
667 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
|
668 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
|
669 { |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
670 const int vbank = raster & 7; |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
671 |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
672 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
|
673 return img->screen[vbank][scroffs] >> 4; |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
674 else |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
675 return img->screen[vbank][scroffs] & 15; |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
676 } |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
677 |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
678 |
1369 | 679 // |
680 // Array with data for supported formats | |
681 // | |
1393
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
682 #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
|
683 #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
|
684 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
|
685 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
|
686 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
|
687 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
|
688 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
|
689 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
|
690 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
|
691 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
|
692 |
4f81528aa4f6
Simplify some image format definitions by using macro to define screen ram blocks.
Matti Hamalainen <ccr@tnsp.org>
parents:
1387
diff
changeset
|
693 |
516 | 694 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
|
695 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
696 { |
924
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
697 D64_FMT_MC, "d2p", "DrazPaint 2.0 (packed)", 0x5800, 0, |
939
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
698 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
699 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1443 | 700 fmtProbeDrazPaint20Packed, |
701 fmtDecodeDrazPaintPacked, NULL, | |
702 NULL, NULL, | |
703 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
|
704 { |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
705 { 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
|
706 { 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
|
707 { 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
|
708 { 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
|
709 { 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
|
710 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
711 }, |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
712 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
713 { |
924
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
714 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
|
715 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
|
716 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
1443 | 717 fmtProbeDrazLace10Packed, |
718 fmtDecodeDrazPaintPacked, NULL, | |
719 NULL, NULL, | |
720 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
|
721 { |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
722 { 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
|
723 { 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
|
724 { 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
|
725 { 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
|
726 { 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
|
727 { 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
|
728 { 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
|
729 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
730 }, |
925 | 731 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
732 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
733 D64_FMT_MC, "drp", "DrazPaint (unpacked)", 0x5800, 10051, |
939
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
734 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
735 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 736 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
|
737 NULL, NULL, |
1442 | 738 NULL, NULL, |
739 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
|
740 { |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
741 { 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
|
742 { 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
|
743 { 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
|
744 { 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
|
745 { 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
|
746 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
747 }, |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
748 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
749 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
750 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
|
751 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
|
752 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
1442 | 753 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
|
754 NULL, NULL, |
1442 | 755 NULL, NULL, |
756 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
|
757 { |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
758 { 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
|
759 { 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
|
760 { 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
|
761 { 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
|
762 { 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
|
763 { 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
|
764 { 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
|
765 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
766 }, |
925 | 767 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
768 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
769 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
|
770 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
|
771 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
1442 | 772 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
|
773 NULL, NULL, |
1443 | 774 NULL, NULL, |
775 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
|
776 { |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
777 { 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
|
778 { 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
|
779 { 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
|
780 { 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
|
781 { 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
|
782 { 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
|
783 { 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
|
784 { 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
|
785 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
786 }, |
925 | 787 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
788 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
789 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
|
790 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
791 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 792 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
|
793 NULL, NULL, |
1442 | 794 NULL, NULL, |
795 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
|
796 { |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
797 { 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
|
798 { 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
|
799 { 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
|
800 { 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
|
801 { 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
|
802 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
803 }, |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
804 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
805 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
806 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
|
807 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
808 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 809 NULL, |
524
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
810 NULL, NULL, |
1442 | 811 NULL, NULL, |
812 NULL, | |
524
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
813 { |
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
814 { DT_BITMAP, 0x0000, 0, 0, NULL, NULL }, |
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
815 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, |
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
816 { 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
|
817 { 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
|
818 { DT_LAST, 0, 0, 0, NULL, NULL }, |
524
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
819 } |
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
820 }, |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
821 |
524
78edb9710ab7
Add Advanced Art Studio format support.
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
822 { |
924
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
823 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
|
824 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
825 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 826 fmtProbeAmicaPaintPacked, |
827 fmtDecodeAmicaPaintPacked, NULL, | |
828 NULL, NULL, | |
829 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
|
830 { |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
831 { 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
|
832 { 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
|
833 { 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
|
834 { 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
|
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 }, |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
838 |
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
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, "rpm", "Run Paint (unpacked)", 0x6000, 10006, |
939
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
841 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
842 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 843 NULL, |
527
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
844 NULL, NULL, |
1442 | 845 NULL, NULL, |
846 NULL, | |
527
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
847 { |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
848 { 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
|
849 { 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
|
850 { 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
|
851 { 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
|
852 { 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
|
853 } |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
854 }, |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
855 |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
856 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
857 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
|
858 C64_SCR_WIDTH , C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
859 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 860 NULL, |
527
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
861 NULL, NULL, |
1442 | 862 NULL, NULL, |
863 NULL, | |
527
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
864 { |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
865 { 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
|
866 { 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
|
867 { 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
|
868 } |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
869 }, |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
870 |
49666bb544b9
Add Run Paint MC unpacked format and Art Studio hires format.
Matti Hamalainen <ccr@tnsp.org>
parents:
526
diff
changeset
|
871 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
872 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
|
873 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
|
874 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
1442 | 875 NULL, |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
876 NULL, NULL, |
1442 | 877 NULL, NULL, |
878 NULL, | |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
879 { |
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
880 { 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
|
881 { 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
|
882 { 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
|
883 } |
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
884 }, |
1396 | 885 |
1370
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
886 { |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
887 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
|
888 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
889 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
1442 | 890 NULL, |
1370
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
891 NULL, NULL, |
1442 | 892 NULL, NULL, |
893 NULL, | |
1370
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
894 { |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
895 { DT_BITMAP, 0x0000, 0, 0, NULL, NULL }, |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
896 { 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
|
897 { 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
|
898 { 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
|
899 { DT_LAST, 0, 0, 0, NULL, NULL }, |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
900 } |
53358cc2f9ff
Add support for Interpaint Multicolor (unpacked) images.
Matti Hamalainen <ccr@tnsp.org>
parents:
1369
diff
changeset
|
901 }, |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
902 |
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
903 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
904 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
|
905 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
|
906 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
1442 | 907 NULL, |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
908 NULL, NULL, |
1442 | 909 NULL, NULL, |
910 NULL, | |
526
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
911 { |
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
912 { 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
|
913 { 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
|
914 { 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
|
915 } |
f7df57cafdd9
Add support for Interpaint (unpacked) and Doodle (unpacked) hires formats.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
916 }, |
905 | 917 |
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
|
918 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
533
diff
changeset
|
919 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
|
920 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
921 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 922 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
|
923 NULL, NULL, |
1442 | 924 NULL, NULL, |
925 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
|
926 { |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
927 { 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
|
928 { 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
|
929 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
|
930 { 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
|
931 { 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
|
932 } |
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
|
933 }, |
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
|
934 |
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
|
935 { |
1392
aad9d9e7e1d3
Cleanups, support another variant of FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1390
diff
changeset
|
936 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
|
937 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
938 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 939 fmtProbeFLIDesigner, |
940 NULL, NULL, | |
941 NULL, NULL, | |
942 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
|
943 { |
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
|
944 { 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
|
945 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
|
946 { 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
|
947 { 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
|
948 } |
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
|
949 }, |
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
|
950 |
906
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
951 { |
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
952 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
|
953 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
5e820addd035
Fix the multicolor bitmap widths.
Matti Hamalainen <ccr@tnsp.org>
parents:
935
diff
changeset
|
954 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 955 NULL, |
906
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
956 NULL, NULL, |
1442 | 957 NULL, NULL, |
958 NULL, | |
906
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
959 { |
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
960 { 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
|
961 { 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
|
962 { 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
|
963 { 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
|
964 { 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
|
965 } |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
966 }, |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
967 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
968 #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
|
969 #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
|
970 #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
|
971 #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
|
972 |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
973 { |
943
8eacbc38b043
Add kludge to allow more lax handling of the "unknown" $2000 format.
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
974 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
|
975 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
|
976 XX2_WIDTH_CH , XX2_HEIGHT_CH, |
1442 | 977 fmtProbeFormatXX2, |
978 fmtDecodeFormatXX2, NULL, | |
979 NULL, NULL, | |
980 NULL, | |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
981 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
982 { 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
|
983 { 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
|
984 { DT_SCREEN_RAM, XX2_BSIZE, 0, XX2_SIZE, NULL, NULL }, |
1382 | 985 { 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
|
986 { 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
|
987 } |
e591ce9b3526
Added support to gfxconv/view64 for unknown(?) bitmap format found on some
Matti Hamalainen <ccr@tnsp.org>
parents:
905
diff
changeset
|
988 }, |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
989 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
990 { |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
991 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
|
992 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
|
993 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 994 fmtProbeFunPaint2Unpacked, |
995 fmtDecodeFunPaint2Unpacked, NULL, | |
996 NULL, NULL, | |
997 fmtGetPixelFunPaint2, | |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
998 { |
1393
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
999 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
|
1000 { 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
|
1001 { 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
|
1002 { 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
|
1003 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
|
1004 { 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
|
1005 { 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
|
1006 { 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
|
1007 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1008 }, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1009 |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1010 { |
1396 | 1011 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
|
1012 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
|
1013 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 1014 fmtProbeFunPaint2Packed, |
1015 fmtDecodeFunPaint2Packed, NULL, | |
1016 NULL, NULL, | |
1017 fmtGetPixelFunPaint2, | |
1384
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1018 { |
1393
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
1019 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
|
1020 { 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
|
1021 { 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
|
1022 { 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
|
1023 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
|
1024 { 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
|
1025 { 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
|
1026 { 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
|
1027 } |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1028 }, |
ef20200d71d7
Implement (buggy) support for packed and unpacked FunPaint II images in
Matti Hamalainen <ccr@tnsp.org>
parents:
1382
diff
changeset
|
1029 |
1389
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1030 { |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1031 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
|
1032 C64_SCR_WIDTH, C64_SCR_HEIGHT, |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1033 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
1442 | 1034 fmtProbeGunPaint, |
1035 NULL, NULL, | |
1036 NULL, NULL, | |
1037 fmtGetPixelGunPaint, | |
1389
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1038 { |
1393
b5fc5a05033d
Make screen ram definition macros more flexible, for possible future use cases.
Matti Hamalainen <ccr@tnsp.org>
parents:
1392
diff
changeset
|
1039 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
|
1040 { DT_BITMAP, 0x2000, 0, 0, NULL, NULL }, |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1041 { 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
|
1042 { 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
|
1043 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
|
1044 { DT_BITMAP, 0x6400, 1, 0, NULL, NULL }, |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1045 { 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
|
1046 { DT_LAST, 0, 0, 0, NULL, NULL }, |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1047 } |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1048 }, |
979f550ead77
Implement GunPaint support. Possibly not working correctly.
Matti Hamalainen <ccr@tnsp.org>
parents:
1388
diff
changeset
|
1049 |
1394
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1050 { |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1051 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
|
1052 C64_SCR_WIDTH, 14 * 8, |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1053 C64_SCR_CH_WIDTH , 14, |
1442 | 1054 NULL, |
1394
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1055 NULL, NULL, |
1442 | 1056 NULL, NULL, |
1057 fmtGetPixelCHFLI, | |
1394
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1058 { |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1059 { 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
|
1060 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
|
1061 { 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
|
1062 } |
054561dbcd57
Add support for Crest Hires FLI Designer format.
Matti Hamalainen <ccr@tnsp.org>
parents:
1393
diff
changeset
|
1063 }, |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1064 }; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1065 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1066 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
|
1067 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1068 |
518 | 1069 // Perform probing of the given data buffer, trying to determine |
1070 // if it contains a supported "C64" image format. Returns the | |
1071 // "probe score", see libgfx.h for list of values. If a match | |
1072 // 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
|
1073 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
|
1074 { |
1380 | 1075 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
|
1076 |
1380 | 1077 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
|
1078 { |
516 | 1079 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
|
1080 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
|
1081 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
|
1082 { |
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
1083 // 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
|
1084 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
|
1085 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
|
1086 } |
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
1087 else |
1134
d0898867ec4c
Various fixes for issues reported by clang static analyzer.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1088 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
|
1089 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
|
1090 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1091 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
|
1092 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1093 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
|
1094 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
|
1095 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1096 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1097 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1098 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
|
1099 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1100 *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
|
1101 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
|
1102 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1103 else |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1104 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
|
1105 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1106 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1107 |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1108 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
|
1109 { |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1110 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
|
1111 { |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1112 case DT_COLOR_RAM: |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1113 case DT_BITMAP: |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1114 case DT_SCREEN_RAM: |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1115 case DT_CHAR_DATA: |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1116 if (op->bank < 0 || op->bank > img->nbanks) |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1117 { |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1118 return dmError(DMERR_INTERNAL, |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1119 "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
|
1120 op->bank, img->nbanks, op->type, i); |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1121 } |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1122 break; |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1123 |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1124 case DT_EXTRA_DATA: |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1125 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
|
1126 { |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1127 return dmError(DMERR_INTERNAL, |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1128 "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
|
1129 op->bank, op->type, i); |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1130 } |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1131 break; |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1132 } |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1133 |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1134 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
|
1135 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1136 return dmError(DMERR_INTERNAL, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1137 "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
|
1138 op->type, i); |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1139 } |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1140 |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1141 return DMERR_OK; |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1142 } |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1143 |
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1144 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1145 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
|
1146 { |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1147 BOOL check; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1148 switch (op->type) |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1149 { |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1150 case DT_SCREEN_RAM: |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1151 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
|
1152 *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
|
1153 check = TRUE; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1154 break; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1155 |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1156 case DT_BITMAP: |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1157 *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
|
1158 check = TRUE; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1159 break; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1160 |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1161 case DT_EXTRA_DATA: |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1162 *size = op->size; |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1163 check = TRUE; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1164 break; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1165 |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1166 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
|
1167 *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
|
1168 check = TRUE; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1169 break; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1170 |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1171 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
|
1172 *size = 1; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1173 check = FALSE; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1174 break; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1175 |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1176 default: |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1177 *size = 0; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1178 check = FALSE; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1179 } |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1180 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1181 if (op->size != 0) |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1182 { |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1183 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
|
1184 return FALSE; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1185 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1186 *size = op->size; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1187 } |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1188 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1189 return TRUE; |
927
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1190 } |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1191 |
db495f421242
Change dmC64DefaultSizes[] array into a function instead.
Matti Hamalainen <ccr@tnsp.org>
parents:
925
diff
changeset
|
1192 |
410
e4b2f689aff6
Stdint -> SDL types conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
407
diff
changeset
|
1193 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
|
1194 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
|
1195 { |
1460 | 1196 int res = DMERR_OK; |
1197 | |
513 | 1198 if (buf == NULL || img == NULL || fmt == NULL) |
1199 return DMERR_NULLPTR; | |
1200 | |
925 | 1201 // 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
|
1202 img->type = fmt->type; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1203 img->width = fmt->width; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1204 img->height = fmt->height; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1205 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
|
1206 img->ch_height = fmt->ch_height; |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1207 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
|
1208 |
518 | 1209 // Perform decoding |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1210 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
|
1211 { |
515 | 1212 const DMC64EncDecOp *op = &fmt->encdecOps[i]; |
410
e4b2f689aff6
Stdint -> SDL types conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
407
diff
changeset
|
1213 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
|
1214 size_t size; |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1215 |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1216 // Check for last operator |
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1217 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
|
1218 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
|
1219 |
811 | 1220 // Check operation validity |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1221 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
|
1222 return res; |
925 | 1223 |
811 | 1224 // Check size |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1225 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
|
1226 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1227 return dmError(DMERR_INVALID_DATA, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1228 "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
|
1229 "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
|
1230 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
|
1231 } |
811 | 1232 |
1233 // 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
|
1234 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
|
1235 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1236 return dmError(DMERR_INVALID_DATA, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1237 "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
|
1238 "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
|
1239 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
|
1240 } |
811 | 1241 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1242 src = buf + op->offs; |
811 | 1243 |
1244 // 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
|
1245 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
|
1246 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1247 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
|
1248 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
|
1249 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
|
1250 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
|
1251 case DT_EXTRA_DATA: |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1252 if (img->extraData[op->bank] != NULL) |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1253 { |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1254 return dmError(DMERR_INTERNAL, |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1255 "Extra data block already allocated and used! " |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1256 "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
|
1257 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
|
1258 } |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1259 if ((img->extraData[op->bank] = dmMalloc0(size)) == NULL) |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1260 { |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1261 return dmError(DMERR_MALLOC, |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1262 "Could not allocate extradata block! " |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1263 "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
|
1264 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
|
1265 } |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1266 img->extraDataSizes[op->bank] = size; |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1267 memcpy(img->extraData[op->bank], src, size); |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1268 break; |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1269 |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1270 case DT_COLOR_REG: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1271 switch (op->size) |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1272 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1273 case DC_D020: img->d020 = *src; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1274 case DC_BGCOL: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1275 case DC_D021: img->bgcolor = *src; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1276 case DC_D022: img->d022 = *src; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1277 case DC_D023: img->d023 = *src; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1278 case DC_D024: img->d024 = *src; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1279 default: |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1280 return dmError(DMERR_INTERNAL, |
1371 | 1281 "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
|
1282 "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
|
1283 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
|
1284 } |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1285 break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1286 |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1287 case DT_COLOR_SET: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1288 switch (op->size) |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1289 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1290 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
|
1291 case DC_BGCOL: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1292 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
|
1293 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
|
1294 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
|
1295 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
|
1296 default: |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1297 return dmError(DMERR_INTERNAL, |
1371 | 1298 "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
|
1299 "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
|
1300 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
|
1301 } |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1302 break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1303 |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1304 case DT_CHAR_CONFIG: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1305 switch (op->offs) |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1306 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1307 case D64_CHCFG_SCREEN: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1308 break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1309 |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1310 case D64_CHCFG_LINEAR: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1311 { |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1312 for (int bank = 0; bank < img->nbanks; bank++) |
1371 | 1313 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
|
1314 img->screen[bank][offs] = offs & 0xff; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1315 } |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1316 break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1317 |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1318 default: |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1319 return dmError(DMERR_INTERNAL, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1320 "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
|
1321 "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
|
1322 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
|
1323 } |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1324 break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1325 |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1326 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
|
1327 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
|
1328 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1329 return dmError(DMERR_INTERNAL, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1330 "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
|
1331 "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
|
1332 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
|
1333 } |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
1334 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
|
1335 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1336 return dmError(DMERR_INTERNAL, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1337 "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
|
1338 "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
|
1339 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
|
1340 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1341 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1342 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1343 } |
916 | 1344 |
508
1ed5025c2538
Return DMLIB error values instead of arbitrary 0/negatives.
Matti Hamalainen <ccr@tnsp.org>
parents:
507
diff
changeset
|
1345 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
|
1346 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1347 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1348 |
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
|
1349 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
|
1350 { |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1351 int res = DMERR_OK; |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1352 |
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
|
1353 if (buf == NULL || img == NULL || fmt == NULL) |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1354 return DMERR_NULLPTR; |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1355 |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1356 // 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
|
1357 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
|
1358 { |
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
|
1359 return dmError(res, |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1360 "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
|
1361 fmt->size); |
1447 | 1362 goto err; |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1363 } |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1364 |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1365 // Perform encoding |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1366 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
|
1367 { |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1368 const DMC64EncDecOp *op = &fmt->encdecOps[i]; |
1364 | 1369 size_t size, chksize; |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1370 |
1365
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1371 // Check for last operator |
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1372 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
|
1373 break; |
60d7240e1a63
Remove hardcoded encoding/decoding operator counts from the structures, use
Matti Hamalainen <ccr@tnsp.org>
parents:
1364
diff
changeset
|
1374 |
811 | 1375 // Check operation validity |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1376 if ((res = dmC64SanityCheckEncDecOp(i, op, img)) != DMERR_OK) |
1447 | 1377 goto err; |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1378 |
811 | 1379 // Check size |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1380 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
|
1381 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1382 res = dmError(DMERR_INVALID_DATA, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1383 "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
|
1384 "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
|
1385 i, op->type, op->offs, op->offs, op->bank, size, size, op->size, op->size); |
1447 | 1386 goto err; |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1387 } |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1388 |
811 | 1389 // 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
|
1390 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
|
1391 if (!dmGrowBufCheckGrow(buf, chksize)) |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1392 { |
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
|
1393 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
|
1394 "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
|
1395 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
|
1396 goto err; |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1397 } |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1398 |
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
|
1399 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
|
1400 buf->len = chksize; |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1401 |
811 | 1402 // 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
|
1403 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
|
1404 switch (op->type) |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1405 { |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1406 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
|
1407 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
|
1408 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
|
1409 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
|
1410 case DT_EXTRA_DATA: |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1411 if (img->extraData[op->bank] == NULL) |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1412 { |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1413 res = dmError(DMERR_NULLPTR, |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1414 "DT_EXTRA_DATA block is NULL in ", |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1415 "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
|
1416 i, op->offs, op->offs, op->bank, size, size, buf->len, buf->len); |
1447 | 1417 goto err; |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1418 } |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1419 if (size > img->extraDataSizes[op->bank]) |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1420 { |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1421 res = dmError(DMERR_INTERNAL, |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1422 "DT_EXTRA_DATA size mismatch %d <> %d in ", |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1423 "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
|
1424 op->size, img->extraDataSizes[op->bank], i, op->offs, op->offs, op->bank, size, size, buf->len, buf->len); |
1447 | 1425 goto err; |
1373
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1426 } |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1427 memcpy(dst, img->extraData[op->bank], size); |
fc5ee5b4b0e9
Improve handling of extra data.
Matti Hamalainen <ccr@tnsp.org>
parents:
1372
diff
changeset
|
1428 break; |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1429 |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1430 case DT_COLOR_REG: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1431 switch (op->size) |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1432 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1433 case DC_D020: *dst = img->d020; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1434 case DC_BGCOL: |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1435 case DC_D021: *dst = img->bgcolor; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1436 case DC_D022: *dst = img->d022; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1437 case DC_D023: *dst = img->d023; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1438 case DC_D024: *dst = img->d024; break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1439 default: |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1440 res = dmError(DMERR_INTERNAL, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1441 "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
|
1442 "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
|
1443 op->size, i, op->offs, op->offs, op->bank, size, size, buf->len, buf->len); |
1447 | 1444 goto err; |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1445 } |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1446 break; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1447 |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1448 case DT_ENC_FUNCTION: |
904
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1449 if (op->encfunction == NULL) |
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1450 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1451 res = dmError(DMERR_INTERNAL, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1452 "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
|
1453 "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
|
1454 i, op->offs, op->offs, op->bank, size, size, buf->len, buf->len); |
1447 | 1455 goto err; |
904
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1456 } |
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1457 /* |
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1458 if (!op->encfunction(op, buf, len)) |
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1459 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1460 res = dmError(DMERR_INTERNAL, |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
946
diff
changeset
|
1461 "Encode op custom function failed: op #%d, " |
904
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1462 "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
|
1463 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
|
1464 goto out; |
904
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1465 } |
d3cd9f2a8ef1
Some dummy code for encfunctions.
Matti Hamalainen <ccr@tnsp.org>
parents:
903
diff
changeset
|
1466 */ |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1467 break; |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1468 } |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1469 } |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1470 |
1448
50402c225ef4
Do not insert load address to the buffer beginning in dmC64EncodeGenericBMP().
Matti Hamalainen <ccr@tnsp.org>
parents:
1447
diff
changeset
|
1471 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
|
1472 |
1447 | 1473 err: |
532
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1474 return res; |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1475 } |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1476 |
128a50feff07
Implement initial generic bitmap "encoding" function, that constructs
Matti Hamalainen <ccr@tnsp.org>
parents:
531
diff
changeset
|
1477 |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1478 // 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
|
1479 // 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
|
1480 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
|
1481 { |
1375
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1482 DMC64GetPixelFunc getPixel; |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1483 |
556
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1484 // Sanity check arguments |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1485 if (dst == NULL || src == NULL) |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1486 return DMERR_NULLPTR; |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1487 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1488 if (dst->width < src->width || dst->height < src->height) |
1460 | 1489 { |
1490 return dmError(DMERR_INVALID_DATA, | |
1491 "Invalid src vs. dst width/height %d x %d <-> %d x %d\n", | |
1492 src->width, src->height, dst->width, dst->height); | |
1493 } | |
556
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1494 |
1167 | 1495 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
|
1496 |
1375
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1497 // Check pixel getter function |
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1498 if (fmt->getPixel != NULL) |
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1499 getPixel = fmt->getPixel; |
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1500 else |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
1501 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
|
1502 |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1503 // 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
|
1504 int rwidth = src->width; |
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1505 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
|
1506 rwidth /= 2; |
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1507 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1508 // Perform conversion |
1411 | 1509 Uint8 *dp = dst->data; |
1510 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
|
1511 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1512 Uint8 *d = dp; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1513 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
|
1514 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
|
1515 int xc; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1516 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1517 if (src->type & D64_FMT_CHAR) |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1518 { |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1519 // Charmode conversion |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1520 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
|
1521 // Hi-res charmap |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1522 for (xc = 0; xc < rwidth; xc++) |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1523 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1524 const int x = xc / 8; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1525 const int scroffs = scroffsy + x; |
918 | 1526 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
|
1527 const int v = 7 - (xc & 7); |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1528 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1529 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
|
1530 *d++ = src->color[0][scroffs]; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1531 else |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1532 *d++ = src->bgcolor; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1533 } |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1534 else |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1535 // Multicolor variants |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1536 for (xc = 0; xc < rwidth; xc++) |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1537 { |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1538 const int x = xc / 4; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1539 const int scroffs = scroffsy + x; |
918 | 1540 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
|
1541 const int col = src->color[0][scroffs] & 15; |
925 | 1542 |
944
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1543 if (col & 8) |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1544 { |
944
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1545 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
|
1546 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
|
1547 { |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1548 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
|
1549 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
|
1550 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
|
1551 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
|
1552 } |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1553 } |
944
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1554 else |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1555 { |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1556 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
|
1557 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
|
1558 *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
|
1559 else |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1560 *d++ = src->bgcolor; |
c62bb4028cf0
Implement multicolor / standard switching support based on color ram value's
Matti Hamalainen <ccr@tnsp.org>
parents:
943
diff
changeset
|
1561 } |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1562 } |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
1563 } |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1564 else |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1565 { |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1566 // 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
|
1567 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
|
1568 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1569 if ((src->type & D64_FMT_MC) == D64_FMT_HIRES) |
811 | 1570 // Hi-res bitmap |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1571 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
|
1572 { |
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1573 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
|
1574 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
|
1575 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
|
1576 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
|
1577 |
1387
14d79e4d82cf
Oops, 100L. Had forgotten to change singlecolor mode handling pixel getter
Matti Hamalainen <ccr@tnsp.org>
parents:
1385
diff
changeset
|
1578 *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
|
1579 } |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1580 else |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1581 // Multicolor bitmap and variants |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1582 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
|
1583 { |
901
f532262f90b1
Actually fix commit 16aa5955dfb5.
Matti Hamalainen <ccr@tnsp.org>
parents:
857
diff
changeset
|
1584 const int x = xc / 4; |
f532262f90b1
Actually fix commit 16aa5955dfb5.
Matti Hamalainen <ccr@tnsp.org>
parents:
857
diff
changeset
|
1585 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
|
1586 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
|
1587 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
|
1588 |
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1589 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
|
1590 { |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1591 switch (src->laceType) |
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1592 { |
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1593 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
|
1594 *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
|
1595 *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
|
1596 break; |
1366
d4387509a363
Return DMERR_NOT_SUPPORTED for decoding color-interlaced images, for now
Matti Hamalainen <ccr@tnsp.org>
parents:
1365
diff
changeset
|
1597 |
d4387509a363
Return DMERR_NOT_SUPPORTED for decoding color-interlaced images, for now
Matti Hamalainen <ccr@tnsp.org>
parents:
1365
diff
changeset
|
1598 default: |
d4387509a363
Return DMERR_NOT_SUPPORTED for decoding color-interlaced images, for now
Matti Hamalainen <ccr@tnsp.org>
parents:
1365
diff
changeset
|
1599 return DMERR_NOT_SUPPORTED; |
1362
7bc67ba68904
Better handling of resolution interlaced pictures.
Matti Hamalainen <ccr@tnsp.org>
parents:
1361
diff
changeset
|
1600 } |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1601 } |
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1602 else |
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1603 { |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
1604 *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
|
1605 } |
529
1bce06b5026f
Combine conversion of interlaced and normal multicolor images to one function.
Matti Hamalainen <ccr@tnsp.org>
parents:
528
diff
changeset
|
1606 } |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1607 } |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
1608 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
|
1609 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1610 |
508
1ed5025c2538
Return DMLIB error values instead of arbitrary 0/negatives.
Matti Hamalainen <ccr@tnsp.org>
parents:
507
diff
changeset
|
1611 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
|
1612 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1613 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1614 |
940
ff18d2511843
Remove the doubleMC madness completely. Should be replaced with x/y aspect
Matti Hamalainen <ccr@tnsp.org>
parents:
939
diff
changeset
|
1615 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
|
1616 { |
940
ff18d2511843
Remove the doubleMC madness completely. Should be replaced with x/y aspect
Matti Hamalainen <ccr@tnsp.org>
parents:
939
diff
changeset
|
1617 int res; |
556
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1618 DMImage *dst; |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1619 |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1620 if (pdst == NULL || src == NULL) |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1621 return DMERR_NULLPTR; |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1622 |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1623 // Allocate image structure |
1289 | 1624 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
|
1625 return DMERR_MALLOC; |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1626 |
1426
4c7b456d7f0b
Rename global dmC64Palette to dmDefaultC64Palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
1425
diff
changeset
|
1627 // Set partial palette information |
556
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1628 dst->ncolors = C64_NCOLORS; |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1629 dst->constpal = TRUE; |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1630 |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1631 // Convert |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1632 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
|
1633 res = fmt->convertFrom(dst, src, fmt); |
556
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1634 else |
1375
f5368c13a872
Implement more flexible generic format decoding by separating the pixel
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
1635 res = dmC64ConvertGenericBMP2Image(dst, src, fmt); |
556
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1636 |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1637 return res; |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1638 } |
44d1e0d4acf3
Improve DMC64Image -> DMImage conversion facilities.
Matti Hamalainen <ccr@tnsp.org>
parents:
548
diff
changeset
|
1639 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1640 |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1641 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
|
1642 const size_t probeOffs, const size_t loadOffs, |
516 | 1643 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
|
1644 { |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1645 if (img == NULL) |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1646 return DMERR_NULLPTR; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1647 |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1648 // Check for forced format |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1649 if (forced != NULL) |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1650 *fmt = forced; |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1651 else |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1652 { |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1653 // Nope, perform a generic probe |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1654 if (probeOffs >= len) |
1460 | 1655 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
|
1656 |
537
32d9e67da189
Rename generic probing function to match the style of other lib64gfx functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
536
diff
changeset
|
1657 if (dmC64ProbeBMP(buf + probeOffs, len - probeOffs, fmt) == DM_PROBE_SCORE_FALSE) |
1460 | 1658 return DMERR_NOT_SUPPORTED; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1659 } |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1660 |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1661 if (loadOffs >= len) |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1662 return DMERR_INVALID_ARGS; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1663 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1664 if (*fmt == NULL) |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1665 return DMERR_INVALID_DATA; |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1666 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1667 // Allocate memory |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1377
diff
changeset
|
1668 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
|
1669 return DMERR_MALLOC; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1670 |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
410
diff
changeset
|
1671 // 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
|
1672 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
|
1673 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
|
1674 else |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
927
diff
changeset
|
1675 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
|
1676 } |