annotate tools/lib64fmts.c @ 2521:b19535da15e9

Add new field 'size_t extra' to DMC64ImageFormat for certain image format data for which size field was previously abused for.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 15 May 2020 03:06:48 +0300
parents 4dbb6572622d
children 27271f2afa7c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 /*
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2 * Functions for reading and converting various restricted
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 * C64/etc and/or indexed/paletted graphics formats.
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
4 * Programmed and designed by Matti 'ccr' Hamalainen
2371
82cb32297ed2 Bump copyright years.
Matti Hamalainen <ccr@tnsp.org>
parents: 2368
diff changeset
5 * (C) Copyright 2012-2020 Tecnic Software productions (TNSP)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
6 *
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7 * Please read file 'COPYING' for information on license and distribution.
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8 */
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
9 #include "lib64gfx.h"
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
10
2080
7e4087e2740d Define macros DM_MEMCMP_SIZE() and DM_MEMCMP_LEN() as helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 2056
diff changeset
11 #define DM_MEMCMP_SIZE(mptr, mcmp) memcmp((mptr), (mcmp), sizeof(mcmp))
7e4087e2740d Define macros DM_MEMCMP_SIZE() and DM_MEMCMP_LEN() as helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 2056
diff changeset
12 #define DM_MEMCMP_LEN(mptr, mcmp) memcmp((mptr), (mcmp), strlen(mcmp))
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
13
2301
d71185584d95 Comment the necessity of fmtProbeGigapaintHires()..
Matti Hamalainen <ccr@tnsp.org>
parents: 2300
diff changeset
14
d71185584d95 Comment the necessity of fmtProbeGigapaintHires()..
Matti Hamalainen <ccr@tnsp.org>
parents: 2300
diff changeset
15 // Basic probe, but return MAX score for this format
1915
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
16 static int fmtProbeGigapaintHires(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
17 {
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
18 if (buf->len == fmt->size &&
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
19 dmCompareAddr16(buf, 0, fmt->addr))
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
20 return DM_PROBE_SCORE_MAX;
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
21
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
22 return DM_PROBE_SCORE_FALSE;
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
23 }
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
24
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
25
1983
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
26 // XXX TODO: Research what these values actually mean. It would seem probable
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
27 // that these may not be static values at all, as there are 8 more that change
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
28 // before actual image data, but do not seem to be used in the image itself.
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
29 static const Uint8 fmtMicroIllustrator_MagicID_1[] =
1983
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
30 {
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
31 0xff, 0x80, 0x69, 0x67, 0x14, 0x00,
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
32 };
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
33
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
34 static const Uint8 fmtMicroIllustrator_MagicID_2[] =
1983
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
35 {
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
36 0xe8, 0x03, 0xe8, 0x03, 0x40, 0x1f,
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
37 };
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
38
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
39 static int fmtProbeMicroIllustrator(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
40 {
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
41 if (buf->len == fmt->size &&
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
42 DM_MEMCMP_SIZE(buf->data + 2, fmtMicroIllustrator_MagicID_1) == 0
1983
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
43 &&
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
44 DM_MEMCMP_SIZE(buf->data + 9, fmtMicroIllustrator_MagicID_2) == 0
1983
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
45 )
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
46 return DM_PROBE_SCORE_MAX;
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
47
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
48 return DM_PROBE_SCORE_FALSE;
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
49 }
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
50
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
51
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
52 static int fmtEncodeMicroIllustrator(const DMC64EncDecOp *op, DMGrowBuf *buf,
1985
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
53 const DMC64Image *img, const DMC64ImageCommonFormat *fmt)
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
54 {
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
55 (void) op;
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
56 (void) img;
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
57 (void) fmt;
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
58
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
59 memcpy(buf->data + 2, fmtMicroIllustrator_MagicID_1, sizeof(fmtMicroIllustrator_MagicID_1));
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
60 memcpy(buf->data + 9, fmtMicroIllustrator_MagicID_2, sizeof(fmtMicroIllustrator_MagicID_2));
1985
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
61
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
62 return DMERR_OK;
1985
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
63 }
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
64
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
65
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
66 static const Uint8 fmtSupeRes_MagicID_1[] =
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
67 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
68 0x40, 0x5c, 0x2a,
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
69 };
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
70
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
71
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
72 static int fmtProbeSupeRes(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
73 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
74 if (buf->len > 12 &&
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
75 DM_MEMCMP_SIZE(buf->data, fmtSupeRes_MagicID_1) == 0)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
76 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
77 if (buf->data[3] == fmt->extra)
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
78 return DM_PROBE_SCORE_MAX;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
79 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
80
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
81 return DM_PROBE_SCORE_FALSE;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
82 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
83
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
84
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
85 typedef struct
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
86 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
87 DMGrowBuf src;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
88 Uint8 *dstBuf;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
89 size_t dstSize;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
90
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
91 Uint8 dbyte, repcount;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
92
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
93 size_t offs, end_offs;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
94 } DMSupeResCtx;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
95
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
96
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
97 static int fmtSupeResGetByte(DMSupeResCtx *ctx, Uint8 *data, const int mode)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
98 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
99 if (!dmGrowBufGetU8(&ctx->src, data))
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
100 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
101 return dmError(DMERR_INVALID_DATA,
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
102 "SupeRes: Out of input data (N=%d).\n",
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
103 mode);
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
104 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
105 else
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
106 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
107 return DMERR_OK;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
108 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
109 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
110
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
111
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
112 static int fmtDecodeSupeResByte(DMSupeResCtx *ctx)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
113 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
114 Uint8 tmp;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
115 int res;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
116
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
117 lcont:
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
118
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
119 if ((res = fmtSupeResGetByte(ctx, &tmp, 1)) != DMERR_OK)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
120 goto out;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
121
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
122 if (tmp == 0x21)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
123 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
124 // ????
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
125 ctx->offs = 0xffff;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
126 return DMERR_OK;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
127 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
128 else
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
129 if (tmp == 0x24)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
130 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
131 ctx->dbyte = 0xff;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
132 return DMERR_OK;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
133 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
134 else
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
135 if (tmp == 0x20)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
136 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
137 if ((res = fmtSupeResGetByte(ctx, &tmp, 2)) != DMERR_OK)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
138 goto out;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
139
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
140 ctx->repcount = tmp - 0x26;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
141
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
142 if ((res = fmtSupeResGetByte(ctx, &tmp, 3)) != DMERR_OK)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
143 goto out;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
144
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
145 if (tmp == 0x24)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
146 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
147 ctx->dbyte = 0xff;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
148 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
149 else
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
150 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
151 if (tmp == 0x25)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
152 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
153 if ((res = fmtSupeResGetByte(ctx, &tmp, 4)) != DMERR_OK)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
154 goto out;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
155
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
156 tmp = (0x26 + tmp) & 0xff;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
157 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
158
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
159 ctx->dbyte = tmp - 0x26;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
160 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
161
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
162 for (int cnt = 0; cnt < ctx->repcount; cnt++)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
163 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
164 ctx->dstBuf[ctx->offs++] = ctx->dbyte;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
165 if (ctx->offs >= ctx->end_offs)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
166 goto out;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
167 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
168
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
169 if (ctx->offs < ctx->end_offs)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
170 goto lcont;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
171
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
172 ctx->offs--;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
173
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
174 goto out;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
175 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
176 else
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
177 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
178 if (tmp == 0x25)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
179 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
180 if ((res = fmtSupeResGetByte(ctx, &tmp, 9)) != DMERR_OK)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
181 goto out;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
182
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
183 tmp = (0x26 + tmp) & 0xff;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
184 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
185
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
186 ctx->dbyte = tmp - 0x26;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
187
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
188 return DMERR_OK;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
189 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
190
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
191 goto lcont;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
192
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
193 out:
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
194 return res;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
195 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
196
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
197
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
198 static int fmtDecodeSupeResSection(DMSupeResCtx *ctx, const size_t offs, const size_t size)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
199 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
200 int res = DMERR_OK;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
201
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
202 ctx->offs = offs;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
203 ctx->end_offs = offs + size;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
204
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
205 do
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
206 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
207 if ((res = fmtDecodeSupeResByte(ctx)) != DMERR_OK)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
208 goto out;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
209
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
210 if (ctx->offs < ctx->end_offs)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
211 ctx->dstBuf[ctx->offs++] = ctx->dbyte;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
212
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
213 } while (ctx->offs < ctx->end_offs);
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
214
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
215 out:
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
216 return res;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
217 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
218
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
219
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
220 static int fmtDecodeSupeRes(DMC64Image *img, const DMGrowBuf *psrc, const DMC64ImageFormat *fmt)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
221 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
222 DMSupeResCtx ctx;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
223 DMGrowBuf tmp;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
224 int res;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
225
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
226 memset(&ctx, 0, sizeof(ctx));
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
227 ctx.dstSize = 0x4000;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
228
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
229 // As we need to modify the offs, etc. but not the data,
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
230 // we will just make a shallow copy of the DMGrowBuf struct
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
231 dmGrowBufConstCopyOffs(&ctx.src, psrc, 4);
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
232
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
233 // Allocate output buffer
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
234 if ((ctx.dstBuf = dmMalloc0(ctx.dstSize)) == NULL)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
235 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
236 return dmError(DMERR_MALLOC,
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
237 "Could not allocate memory for decoding buffer.\n");
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
238 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
239
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
240 switch (fmt->extra)
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
241 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
242 case 0x23:
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
243 case 0x25:
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
244 if ((res = fmtDecodeSupeResSection(&ctx, 0x0000, 0x03e8)) != DMERR_OK ||
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
245 (res = fmtDecodeSupeResSection(&ctx, 0x0400, 0x1f40)) != DMERR_OK)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
246 goto out;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
247 break;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
248
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
249 case 0x24:
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
250 case 0x26:
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
251 if ((res = fmtDecodeSupeResByte (&ctx)) != DMERR_OK)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
252 goto out;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
253
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
254 ctx.dstBuf[0x2710] = ctx.dbyte;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
255
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
256 if ((res = fmtDecodeSupeResSection(&ctx, 0x1f40, 0x03e8)) != DMERR_OK ||
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
257 (res = fmtDecodeSupeResSection(&ctx, 0x2328, 0x03e8)) != DMERR_OK ||
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
258 (res = fmtDecodeSupeResSection(&ctx, 0x0000, 0x1f40)) != DMERR_OK)
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
259 goto out;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
260
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
261 break;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
262 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
263
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
264 res = dmC64DecodeGenericBMP(img,
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
265 dmGrowBufConstCreateFrom(&tmp, ctx.dstBuf, ctx.dstSize), fmt);
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
266
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
267 out:
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
268 dmFree(ctx.dstBuf);
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
269 return res;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
270 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
271
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
272
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
273 static const Uint8 fmtMarqPETSCII_ID1[] =
2130
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
274 {
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
275 0x01, 0x08, 0x0b, 0x08, 0xef, 0x00, 0x9e, 0x32, 0x30, 0x36,
2287
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
276 0x31, 0x00, 0x00, 0x00, 0xa9, 0x0b, 0x8d, 0x11, 0xd0,
2130
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
277 };
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
278
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
279 static const Uint8 fmtMarqPETSCII_ID2[] =
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
280 {
2287
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
281 0xa9, 0x00, 0x8d, 0x18, 0xd0, // lda #? : sta $d018
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
282 0xa9, 0x00, 0x8d, 0x20, 0xd0, // lda #? : sta $d020
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
283 0xa9, 0x00, 0x8d, 0x21, 0xd0, // lda #? : sta $d021
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
284 };
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
285
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
286 static const Uint8 fmtMarqPETSCII_ID3[] =
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
287 {
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
288 0xa2, 0x00, 0xa0, 0xfa, 0xbd, 0x61,
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
289 0x08, 0x9d, 0x00, 0x04, 0xbd, 0x5b, 0x09, 0x9d, 0xfa, 0x04,
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
290 0xbd, 0x55, 0x0a, 0x9d, 0xf4, 0x05, 0xbd, 0x4f, 0x0b, 0x9d,
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
291 0xee, 0x06, 0xbd, 0x49, 0x0c, 0x9d, 0x00, 0xd8, 0xbd, 0x43,
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
292 0x0d, 0x9d, 0xfa, 0xd8, 0xbd, 0x3d, 0x0e, 0x9d, 0xf4, 0xd9,
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
293 0xbd, 0x37, 0x0f, 0x9d, 0xee, 0xda, 0xe8, 0x88, 0xd0, 0xcc,
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
294 0xa9, 0x1b, 0x8d, 0x11, 0xd0, 0x4c, 0x5e, 0x08,
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
295 };
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
296
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
297
2130
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
298 static int fmtProbeMarqPETSCII(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
299 {
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
300 (void) fmt;
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
301
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
302 if (buf->len == 2098 &&
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
303 DM_MEMCMP_SIZE(buf->data, fmtMarqPETSCII_ID1) == 0 &&
2287
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
304 DM_MEMCMP_SIZE(buf->data + sizeof(fmtMarqPETSCII_ID1) +
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
305 sizeof(fmtMarqPETSCII_ID2), fmtMarqPETSCII_ID3) == 0
2130
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
306 )
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
307 return DM_PROBE_SCORE_MAX;
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
308
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
309 return DM_PROBE_SCORE_FALSE;
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
310 }
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
311
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
312
2368
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
313 static int fmtDecodeHiresPETSCIICharsetData(const DMC64EncDecOp *op, DMC64Image *img,
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
314 const DMGrowBuf *buf, const DMC64ImageCommonFormat *fmt)
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
315 {
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
316 (void) fmt;
2368
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
317 Uint8 val;
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
318
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
319 switch (buf->data[op->offs])
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
320 {
2368
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
321 case 0x14: val = 0; break; // upper case
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
322 case 0x17: val = 1; break; // lower case
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
323 default:
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
324 return DMERR_INVALID_DATA;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
325 }
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
326
2368
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
327 img->extraInfo[D64_EI_CHAR_CASE] = val;
2265
48b48251610a Refactor how the image "mode/type" is handled. It is still not perfect for
Matti Hamalainen <ccr@tnsp.org>
parents: 2238
diff changeset
328 img->extraInfo[D64_EI_MODE] = D64_FMT_HIRES | D64_FMT_CHAR;
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
329 img->extraInfo[D64_EI_CHAR_CUSTOM] = 0;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
330
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
331 return DMERR_OK;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
332 }
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
333
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
334
2368
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
335 static int fmtEncodeHiresPETSCIICharsetData(
2428
09082816665d Fix write support of Abyss Connection PETSCII-Editor 4.61 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2399
diff changeset
336 const DMC64EncDecOp *op, DMGrowBuf *buf, const DMC64Image *img,
09082816665d Fix write support of Abyss Connection PETSCII-Editor 4.61 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2399
diff changeset
337 const DMC64ImageCommonFormat *fmt)
2368
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
338 {
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
339 Uint8 val;
2428
09082816665d Fix write support of Abyss Connection PETSCII-Editor 4.61 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2399
diff changeset
340 (void) fmt;
2368
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
341
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
342 switch (img->extraInfo[D64_EI_CHAR_CASE])
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
343 {
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
344 case 0: val = 0x14; break;
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
345 case 1: val = 0x17; break;
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
346 default: return DMERR_INVALID_DATA;
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
347 }
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
348
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
349 buf->data[op->offs + 2] = val;
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
350
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
351 return DMERR_OK;
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
352 }
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
353
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
354
2366
1e6e018b6487 Rename some functions to be more consistent with their intent.
Matti Hamalainen <ccr@tnsp.org>
parents: 2363
diff changeset
355 static int fmtEncodeMarqPETSCIIData(const DMC64EncDecOp *op, DMGrowBuf *buf,
2287
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
356 const DMC64Image *img, const DMC64ImageCommonFormat *fmt)
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
357 {
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
358 memcpy(buf->data,
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
359 fmtMarqPETSCII_ID1, sizeof(fmtMarqPETSCII_ID1));
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
360
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
361 memcpy(buf->data + sizeof(fmtMarqPETSCII_ID1),
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
362 fmtMarqPETSCII_ID2, sizeof(fmtMarqPETSCII_ID2));
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
363
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
364 memcpy(buf->data + sizeof(fmtMarqPETSCII_ID1) + sizeof(fmtMarqPETSCII_ID2),
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
365 fmtMarqPETSCII_ID3, sizeof(fmtMarqPETSCII_ID3));
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
366
2428
09082816665d Fix write support of Abyss Connection PETSCII-Editor 4.61 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2399
diff changeset
367 return fmtEncodeHiresPETSCIICharsetData(op, buf, img, fmt);
2287
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
368 }
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
369
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
370
2135
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
371 static const Uint8 fmtPetsciiKrisszHu_ID1[] =
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
372 {
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
373 0x01, 0x08, 0x0b, 0x08, 0x0A, 0x00, 0x9E, 0x32, 0x30, 0x36,
2138
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
374 0x31, 0x00, 0x00, 0x00, 0xA9,
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
375 };
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
376
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
377 static const Uint8 fmtPetsciiKrisszHu_ID2[] =
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
378 {
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
379 0x8d, 0x11, 0xd0, 0xa9, 0x80, 0x8d, 0x91, 0x02, 0xa9, 0x18,
2135
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
380 };
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
381
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
382
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
383 static int fmtProbePetsciiKrisszHu(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
384 {
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
385 (void) fmt;
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
386
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
387 if (buf->len == 10193 &&
2138
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
388 DM_MEMCMP_SIZE(buf->data, fmtPetsciiKrisszHu_ID1) == 0 &&
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
389 DM_MEMCMP_SIZE(buf->data + 0x10, fmtPetsciiKrisszHu_ID2) == 0
2135
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
390 )
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
391 return DM_PROBE_SCORE_MAX;
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
392
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
393 return DM_PROBE_SCORE_FALSE;
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
394 }
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
395
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
396
2366
1e6e018b6487 Rename some functions to be more consistent with their intent.
Matti Hamalainen <ccr@tnsp.org>
parents: 2363
diff changeset
397 static int fmtDecodePetsciiKrisszHuData(const DMC64EncDecOp *op, DMC64Image *img,
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
398 const DMGrowBuf *buf, const DMC64ImageCommonFormat *fmt)
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
399 {
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
400 (void) op;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
401 (void) buf;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
402 (void) fmt;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
403
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
404 const Uint8 *data = img->extraData[0].data;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
405 switch (data[0x0028 - 2])
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
406 {
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
407 case 0x00:
2265
48b48251610a Refactor how the image "mode/type" is handled. It is still not perfect for
Matti Hamalainen <ccr@tnsp.org>
parents: 2238
diff changeset
408 img->extraInfo[D64_EI_MODE] = D64_FMT_HIRES | D64_FMT_CHAR;
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
409 img->d020 = data[0x001e - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
410 img->bgcolor = data[0x0023 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
411 break;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
412
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
413 case 0xd8:
2265
48b48251610a Refactor how the image "mode/type" is handled. It is still not perfect for
Matti Hamalainen <ccr@tnsp.org>
parents: 2238
diff changeset
414 img->extraInfo[D64_EI_MODE] = D64_FMT_MC | D64_FMT_CHAR;
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
415 img->d020 = data[0x001e - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
416 img->bgcolor = data[0x0023 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
417 img->d022 = data[0x002d - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
418 img->d023 = data[0x0032 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
419 break;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
420
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
421 case 0x01:
2265
48b48251610a Refactor how the image "mode/type" is handled. It is still not perfect for
Matti Hamalainen <ccr@tnsp.org>
parents: 2238
diff changeset
422 img->extraInfo[D64_EI_MODE] = D64_FMT_ECM | D64_FMT_CHAR;
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
423 img->d020 = data[0x001e - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
424 img->bgcolor = data[0x0023 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
425 img->d022 = data[0x0028 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
426 img->d023 = data[0x002d - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
427 img->d024 = data[0x0032 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
428 break;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
429
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
430 default:
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
431 return DMERR_INVALID_DATA;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
432 }
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
433
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
434 // XXX TODO this format saves the charset data (for 256 chars)
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
435 // in the PRG and there is no direct indication whether it is
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
436 // a customized one or copy of C64 ROM charset .. we could
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
437 // implement a hash-based detection at some point.
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
438 img->extraInfo[D64_EI_CHAR_CASE] = 0;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
439 img->extraInfo[D64_EI_CHAR_CUSTOM] = 1;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
440
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
441 return DMERR_OK;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
442 }
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
443
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
444
2377
d8889ff223b6 UPETSCII is actually old version of Marq's PETSCII editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 2371
diff changeset
445 static int fmtDecodeMarqOldData(const DMC64EncDecOp *op, DMC64Image *img,
2173
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
446 const DMGrowBuf *buf, const DMC64ImageCommonFormat *fmt)
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
447 {
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
448 (void) op;
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
449 (void) buf;
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
450 (void) fmt;
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
451
2265
48b48251610a Refactor how the image "mode/type" is handled. It is still not perfect for
Matti Hamalainen <ccr@tnsp.org>
parents: 2238
diff changeset
452 img->extraInfo[D64_EI_MODE] = D64_FMT_HIRES | D64_FMT_CHAR;
2173
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
453 img->extraInfo[D64_EI_CHAR_CUSTOM] = 0;
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
454
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
455 return DMERR_OK;
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
456 }
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
457
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
458
2367
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
459 static const Uint8 fmtCocaPETSCII_ID1[] =
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
460 {
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
461 0x01, 0x08, 0x0b, 0x08, 0x0a, 0x00, 0x9e, 0x32, 0x30, 0x36,
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
462 0x31, 0x00, 0x00, 0x00, 0x78, 0xa2, 0x00, 0xbd, 0x5a, 0x08,
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
463 0x9d, 0x00, 0x04, 0xbd, 0x5a, 0x09, 0x9d, 0x00, 0x05, 0xbd,
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
464 0x5a, 0x0a, 0x9d, 0x00, 0x06, 0xbd, 0x5a, 0x0b, 0x9d, 0x00,
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
465 0x07, 0xbd, 0x5a, 0x0c, 0x9d, 0x00, 0xd8, 0xbd, 0x5a, 0x0d,
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
466 0x9d, 0x00, 0xd9, 0xbd, 0x5a, 0x0e, 0x9d, 0x00, 0xda, 0xbd,
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
467 0x5a, 0x0f, 0x9d, 0x00, 0xdb, 0xe8, 0xd0, 0xcd, 0xad, 0x42,
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
468 0x0c, 0x8d, 0x20, 0xd0, 0xad, 0x43, 0x0c, 0x8d, 0x21, 0xd0,
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
469 0xad, 0x44, 0x0c, 0x8d, 0x18, 0xd0, 0x4c, 0x55, 0x08
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
470 };
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
471
2368
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
472
2367
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
473 static int fmtProbeCocaPETSCII(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
474 {
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
475 (void) fmt;
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
476
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
477 if (buf->len == 2115 &&
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
478 DM_MEMCMP_SIZE(buf->data, fmtCocaPETSCII_ID1) == 0 &&
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
479 buf->data[0x0c44 - 0x0801 + 2] == 0x14)
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
480 return DM_PROBE_SCORE_MAX;
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
481
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
482 return DM_PROBE_SCORE_FALSE;
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
483 }
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
484
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
485
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
486 static int fmtEncodeCocaPETSCIIData(const DMC64EncDecOp *op, DMGrowBuf *buf,
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
487 const DMC64Image *img, const DMC64ImageCommonFormat *fmt)
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
488 {
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
489 memcpy(buf->data,
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
490 fmtCocaPETSCII_ID1, sizeof(fmtCocaPETSCII_ID1));
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
491
2428
09082816665d Fix write support of Abyss Connection PETSCII-Editor 4.61 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2399
diff changeset
492 return fmtEncodeHiresPETSCIICharsetData(op, buf, img, fmt);
2367
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
493 }
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
494
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
495
2015
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
496 static int fmtProbeKoalaPainter(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
497 {
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
498 int score = DM_PROBE_SCORE_FALSE;
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
499
2112
9dc2976e9fa3 Improve probing of packed and unpacked Koala files. Many converters and
Matti Hamalainen <ccr@tnsp.org>
parents: 2080
diff changeset
500 if (buf->len == 10003 ||
9dc2976e9fa3 Improve probing of packed and unpacked Koala files. Many converters and
Matti Hamalainen <ccr@tnsp.org>
parents: 2080
diff changeset
501 buf->len == 10004)
2015
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
502 score += DM_PROBE_SCORE_MAYBE;
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
503
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
504 if (dmCompareAddr16(buf, 0, fmt->addr))
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
505 score += DM_PROBE_SCORE_MAYBE;
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
506
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
507 return score;
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
508 }
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
509
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
510
1815
2b68b6955635 Rename "Koala Paint" to "Koala Painter".
Matti Hamalainen <ccr@tnsp.org>
parents: 1813
diff changeset
511 static int fmtProbeKoalaPainterPacked(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1594
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
512 {
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
513 // Attempt to prevent misprobes of unpacked Koala and Run Paint
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
514 if (buf->len > 30 &&
2112
9dc2976e9fa3 Improve probing of packed and unpacked Koala files. Many converters and
Matti Hamalainen <ccr@tnsp.org>
parents: 2080
diff changeset
515 buf->len < 10002 &&
1594
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
516 dmCompareAddr16(buf, 0, fmt->addr))
1771
c261db6e39aa Adjust some probe scores.
Matti Hamalainen <ccr@tnsp.org>
parents: 1770
diff changeset
517 return DM_PROBE_SCORE_GOOD;
1594
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
518
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
519 return DM_PROBE_SCORE_FALSE;
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
520 }
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
521
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
522
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
523 static int fmtProbeDoodle(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
524 {
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
525 if (buf->len > 32 &&
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
526 (dmCompareAddr16(buf, 0, 0x1c00) || dmCompareAddr16(buf, 0, 0x5c00)))
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
527 {
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
528 // Packed variant
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
529 if (fmt->extra == 0xfe &&
1841
fc4841460fad Attempt to avoid misprobes of "Rainbow Painter (unpacked)" as packed Doodle files.
Matti Hamalainen <ccr@tnsp.org>
parents: 1840
diff changeset
530 buf->len != 10242) // Attempt to avoid misprobes of "Rainbow Painter (unpacked)"
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
531 return DM_PROBE_SCORE_MAX;
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
532
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
533 // Unpacked variant
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
534 if (fmt->extra != 0xfe && buf->len == fmt->size)
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
535 return DM_PROBE_SCORE_MAX;
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
536 }
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
537
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
538 return DM_PROBE_SCORE_FALSE;
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
539 }
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
540
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
541
2161
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
542 static int fmtProbeArtStudio(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
543 {
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
544 if ((buf->len == fmt->size || buf->len == 9002) &&
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
545 dmCompareAddr16(buf, 0, 0x2000))
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
546 return DM_PROBE_SCORE_MAX;
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
547
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
548 return DM_PROBE_SCORE_FALSE;
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
549 }
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
550
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
551
1839
666b27999570 As the Koala Painter plain RLE compression (without headers and static
Matti Hamalainen <ccr@tnsp.org>
parents: 1838
diff changeset
552 static int fmtDecodeStaticRLEMarkerMode2(DMC64Image *img, const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1578
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
553 {
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
554 int res;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
555 DMGrowBuf mem;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
556 DMCompParams cfg;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
557
1711
4fd94bf558b3 Add function name field to DMCompParams struct and set it in places where we use DMCompParams.
Matti Hamalainen <ccr@tnsp.org>
parents: 1707
diff changeset
558 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
559 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
560 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_2;
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
561 cfg.rleMarkerB = fmt->extra;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
562
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
563 if ((res = dmDecodeGenericRLEAlloc(&mem, buf, &cfg)) != DMERR_OK)
1578
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
564 goto out;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
565
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
566 res = dmC64DecodeGenericBMP(img, &mem, fmt);
1578
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
567
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
568 out:
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
569 dmGrowBufFree(&mem);
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
570 return res;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
571 }
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
572
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
573
1839
666b27999570 As the Koala Painter plain RLE compression (without headers and static
Matti Hamalainen <ccr@tnsp.org>
parents: 1838
diff changeset
574 static int fmtEncodeStaticRLEMarkerMode2(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt)
1578
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
575 {
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
576 int res;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
577 DMGrowBuf tmp;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
578 DMCompParams cfg;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
579
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
580 // Encode the data to temp buffer
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
581 if ((res = dmC64EncodeGenericBMP(TRUE, &tmp, img, fmt)) != DMERR_OK)
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
582 goto out;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
583
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
584 // And now RLE compress the data to the existing buffer
1711
4fd94bf558b3 Add function name field to DMCompParams struct and set it in places where we use DMCompParams.
Matti Hamalainen <ccr@tnsp.org>
parents: 1707
diff changeset
585 cfg.func = fmt->name;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
586 cfg.type = DM_COMP_RLE_MARKER;
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
587 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_2;
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
588 cfg.rleMarkerB = fmt->extra;
1855
5e33f367bafe Adjust the minimum byte run RLE counts from 3 to 4.
Matti Hamalainen <ccr@tnsp.org>
parents: 1854
diff changeset
589 cfg.rleMinCountB = 4;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
590 cfg.rleMaxCountB = 255;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
591 res = dmEncodeGenericRLE(buf, &tmp, &cfg);
1578
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
592
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
593 out:
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
594 dmGrowBufFree(&tmp);
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
595 return res;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
596 }
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
597
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
598
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
599 static int fmtProbeDrazPaint20Packed(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
600 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
601 const Uint8 *ident = buf->data + 2;
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
602 if (buf->len > 22 &&
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
603 dmCompareAddr16(buf, 0, fmt->addr) &&
2080
7e4087e2740d Define macros DM_MEMCMP_SIZE() and DM_MEMCMP_LEN() as helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 2056
diff changeset
604 DM_MEMCMP_LEN(ident, "DRAZPAINT ") == 0 &&
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
605 ident[11] == '.' && (
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
606 (ident[10] == '1' && ident[12] == '4') ||
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
607 (ident[10] == '2' && ident[12] == '0')
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
608 ))
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
609 return DM_PROBE_SCORE_MAX;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
610
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
611 return DM_PROBE_SCORE_FALSE;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
612 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
613
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
614
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
615 static int fmtDecodeDrazPaintPacked(DMC64Image *img, const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
616 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
617 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
618 DMGrowBuf mem, tmp;
1505
3265175b24d2 Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents: 1503
diff changeset
619 DMCompParams cfg;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
620
1711
4fd94bf558b3 Add function name field to DMCompParams struct and set it in places where we use DMCompParams.
Matti Hamalainen <ccr@tnsp.org>
parents: 1707
diff changeset
621 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
622 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
623 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
624 cfg.rleMarkerB = buf->data[0x0d];
1505
3265175b24d2 Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents: 1503
diff changeset
625
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
626 if ((res = dmDecodeGenericRLEAlloc(&mem,
1747
5e928618fdc8 Change DMGrowBuf API somewhat and implement more copy operations.
Matti Hamalainen <ccr@tnsp.org>
parents: 1746
diff changeset
627 dmGrowBufConstCopyOffs(&tmp, buf, 0x0e), &cfg)) != DMERR_OK)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
628 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
629
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
630 res = dmC64DecodeGenericBMP(img, &mem, fmt);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
631
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
632 out:
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
633 dmGrowBufFree(&mem);
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
634 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
635 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
636
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
637
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
638 static int fmtEncodeDrazPaintPacked(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt)
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
639 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
640 int res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
641 DMGrowBuf tmp;
1505
3265175b24d2 Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents: 1503
diff changeset
642 DMCompParams cfg;
2265
48b48251610a Refactor how the image "mode/type" is handled. It is still not perfect for
Matti Hamalainen <ccr@tnsp.org>
parents: 2238
diff changeset
643 const char *magicID = (fmt->format->mode & D64_FMT_ILACE) ? "DRAZLACE! 1.0" : "DRAZPAINT 2.0";
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
644
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
645 // Encode the data to temp buffer
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
646 if ((res = dmC64EncodeGenericBMP(TRUE, &tmp, img, fmt)) != DMERR_OK)
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
647 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
648
1650
9233da9de92c Refactor RLE encoding a bit, and add support for 16bit run counts and make things more configurable.
Matti Hamalainen <ccr@tnsp.org>
parents: 1649
diff changeset
649 // Analyze and setup RLE
1711
4fd94bf558b3 Add function name field to DMCompParams struct and set it in places where we use DMCompParams.
Matti Hamalainen <ccr@tnsp.org>
parents: 1707
diff changeset
650 cfg.func = fmt->name;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
651 cfg.type = DM_COMP_RLE_MARKER;
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
652 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
1855
5e33f367bafe Adjust the minimum byte run RLE counts from 3 to 4.
Matti Hamalainen <ccr@tnsp.org>
parents: 1854
diff changeset
653 cfg.rleMinCountB = 4;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
654 cfg.rleMaxCountB = 255;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
655
2329
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
656 if ((res = dmGenericRLEAnalyze(&tmp, &cfg)) != DMERR_OK)
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
657 goto out;
1661
dc3fbd130db7 RLE analyze was ran before setting up the compression config. Oops. Fixed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
658
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
659 // Add the header bits
1697
1036b0dcccb5 Refactor DMGrowBuf so that there can be buffers that grow "backwards".
Matti Hamalainen <ccr@tnsp.org>
parents: 1684
diff changeset
660 if (!dmGrowBufPut(buf, (Uint8 *) magicID, strlen(magicID)) ||
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
661 !dmGrowBufPutU8(buf, cfg.rleMarkerB))
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
662 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
663 res = DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
664 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
665 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
666
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
667 // And now RLE compress the data to the existing buffer
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
668 res = dmEncodeGenericRLE(buf, &tmp, &cfg);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
669
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
670 out:
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
671 dmGrowBufFree(&tmp);
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
672 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
673 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
674
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
675
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
676 static int fmtProbeDrazLace10Packed(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
677 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
678 if (buf->len > 22 &&
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
679 dmCompareAddr16(buf, 0, fmt->addr) &&
2080
7e4087e2740d Define macros DM_MEMCMP_SIZE() and DM_MEMCMP_LEN() as helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 2056
diff changeset
680 DM_MEMCMP_LEN(buf->data + 2, "DRAZLACE! 1.0") == 0)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
681 return DM_PROBE_SCORE_MAX;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
682
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
683 return DM_PROBE_SCORE_FALSE;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
684 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
685
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
686
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
687 static int fmtDrazLaceGetLaceType(const DMC64EncDecOp *op, DMC64Image *img,
1984
e7f2ddaf94a6 Change encode and decode function format parameter type from DMC64ImageFormat to DMC64ImageCommonFormat.
Matti Hamalainen <ccr@tnsp.org>
parents: 1983
diff changeset
688 const DMGrowBuf *buf, const DMC64ImageCommonFormat *fmt)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
689 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
690 (void) fmt;
1930
c048da352279 Default to D64_ILACE_RES if the given buffer is NULL in fmtDrazLaceGetLaceType().
Matti Hamalainen <ccr@tnsp.org>
parents: 1922
diff changeset
691
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
692 img->extraInfo[D64_EI_ILACE_TYPE] = buf->data[op->offs] ? D64_ILACE_RES : D64_ILACE_COLOR;
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
693 return DMERR_OK;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
694 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
695
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
696
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
697 static int fmtDrazLaceSetLaceType(const DMC64EncDecOp *op, DMGrowBuf *buf,
1984
e7f2ddaf94a6 Change encode and decode function format parameter type from DMC64ImageFormat to DMC64ImageCommonFormat.
Matti Hamalainen <ccr@tnsp.org>
parents: 1983
diff changeset
698 const DMC64Image *img, const DMC64ImageCommonFormat *fmt)
1535
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
699 {
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
700 (void) fmt;
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
701 buf->data[op->offs] = (img->extraInfo[D64_EI_ILACE_TYPE] == D64_ILACE_RES) ? 1 : 0;
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
702 return DMERR_OK;
1535
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
703 }
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
704
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
705
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
706 static int fmtGetPixelDrazLace(DMC64ScanLine *scan,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
707 const DMC64Image *img, const int rasterX, const int rasterY)
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
708 {
2313
866e036d7706 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2311
diff changeset
709 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
866e036d7706 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2311
diff changeset
710 (void) vshift;
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
711
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
712 return dmC64GetGenericMCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
713 bmoffs, scroffs,
2313
866e036d7706 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2311
diff changeset
714 6 - (rasterX & 6), 0,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
715 rasterX & 1, 0, img->bgcolor);
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
716 }
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
717
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
718
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
719 static const char *fmtBDP5_MagicID = "BDP 5.00";
1662
34d7c708649e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1661
diff changeset
720
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
721 static int fmtProbeBDP5Packed(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
722 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
723 if (buf->len > 20 &&
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
724 dmCompareAddr16(buf, 0, fmt->addr) &&
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
725 DM_MEMCMP_LEN(buf->data + 2, fmtBDP5_MagicID) == 0)
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
726 return DM_PROBE_SCORE_MAX;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
727
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
728 return DM_PROBE_SCORE_FALSE;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
729 }
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
730
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
731
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
732 static int fmtDecodeBDP5Packed(DMC64Image *img, const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
733 {
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
734 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
735 DMGrowBuf mem, tmp;
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
736 DMCompParams cfg;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
737
1711
4fd94bf558b3 Add function name field to DMCompParams struct and set it in places where we use DMCompParams.
Matti Hamalainen <ccr@tnsp.org>
parents: 1707
diff changeset
738 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
739 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
740 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_WORD_RUNS | DM_RLE_ORDER_1;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
741 cfg.rleMarkerB = buf->data[8];
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
742 cfg.rleMarkerW = buf->data[9];
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
743
1791
ae53df2156ed Add buffer expansion quirk to Boogie Down Paint decoder, as it seems to be needed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1789
diff changeset
744 // Boogie Down Paint apparently is broken and stores one byte less
ae53df2156ed Add buffer expansion quirk to Boogie Down Paint decoder, as it seems to be needed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1789
diff changeset
745 // than it should in some cases so we need to do some crappy buffer
ae53df2156ed Add buffer expansion quirk to Boogie Down Paint decoder, as it seems to be needed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1789
diff changeset
746 // expansion here ..
ae53df2156ed Add buffer expansion quirk to Boogie Down Paint decoder, as it seems to be needed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1789
diff changeset
747 if (dmGrowBufCopyOffs(&tmp, buf, 10, 1) == NULL)
ae53df2156ed Add buffer expansion quirk to Boogie Down Paint decoder, as it seems to be needed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1789
diff changeset
748 return DMERR_MALLOC;
ae53df2156ed Add buffer expansion quirk to Boogie Down Paint decoder, as it seems to be needed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1789
diff changeset
749
ae53df2156ed Add buffer expansion quirk to Boogie Down Paint decoder, as it seems to be needed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1789
diff changeset
750 tmp.len = tmp.size;
ae53df2156ed Add buffer expansion quirk to Boogie Down Paint decoder, as it seems to be needed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1789
diff changeset
751
ae53df2156ed Add buffer expansion quirk to Boogie Down Paint decoder, as it seems to be needed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1789
diff changeset
752 if ((res = dmDecodeGenericRLEAlloc(&mem, &tmp, &cfg)) != DMERR_OK)
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
753 goto out;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
754
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
755 res = dmC64DecodeGenericBMP(img, &mem, fmt);
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
756
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
757 out:
1792
905c09049fe6 Oops, forgot to free the buffer allocated in the BDP5 decoder. Fixed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1791
diff changeset
758 dmGrowBufFree(&tmp);
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
759 dmGrowBufFree(&mem);
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
760 return res;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
761 }
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
762
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
763
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
764 static int fmtEncodeBDP5Packed(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt)
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
765 {
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
766 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
767 DMGrowBuf mem;
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
768 DMCompParams cfg;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
769
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
770 // Encode the data to temp buffer
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
771 if ((res = dmC64EncodeGenericBMP(TRUE, &mem, img, fmt)) != DMERR_OK)
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
772 goto out;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
773
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
774 // Analyze and setup RLE
1711
4fd94bf558b3 Add function name field to DMCompParams struct and set it in places where we use DMCompParams.
Matti Hamalainen <ccr@tnsp.org>
parents: 1707
diff changeset
775 cfg.func = fmt->name;
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
776 cfg.type = DM_COMP_RLE_MARKER;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
777 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_WORD_RUNS | DM_RLE_ORDER_1;
1855
5e33f367bafe Adjust the minimum byte run RLE counts from 3 to 4.
Matti Hamalainen <ccr@tnsp.org>
parents: 1854
diff changeset
778 cfg.rleMinCountB = 4;
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
779 cfg.rleMaxCountB = 255;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
780 cfg.rleMinCountW = 256;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
781 cfg.rleMaxCountW = 1024;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
782
2329
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
783 if ((res = dmGenericRLEAnalyze(&mem, &cfg)) != DMERR_OK)
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
784 goto out;
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
785
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
786 // Add the header bits
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
787 if (!dmGrowBufPut(buf, (Uint8 *) fmtBDP5_MagicID, strlen(fmtBDP5_MagicID)) ||
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
788 !dmGrowBufPutU8(buf, cfg.rleMarkerB) ||
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
789 !dmGrowBufPutU8(buf, cfg.rleMarkerW))
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
790 {
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
791 res = DMERR_MALLOC;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
792 goto out;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
793 }
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
794
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
795 // And now RLE compress the data to the existing buffer
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
796 res = dmEncodeGenericRLE(buf, &mem, &cfg);
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
797
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
798 out:
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
799 dmGrowBufFree(&mem);
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
800 return res;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
801 }
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
802
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
803
2185
6ba6ca5632d2 Make GunPaint v1.1 writing more accurate.
Matti Hamalainen <ccr@tnsp.org>
parents: 2178
diff changeset
804 static const char *fmtGunPaint_MagicID = "GUNPAINT (JZ) ";
6ba6ca5632d2 Make GunPaint v1.1 writing more accurate.
Matti Hamalainen <ccr@tnsp.org>
parents: 2178
diff changeset
805 #define fmtGunPaint_MagicLen (16)
6ba6ca5632d2 Make GunPaint v1.1 writing more accurate.
Matti Hamalainen <ccr@tnsp.org>
parents: 2178
diff changeset
806 #define fmtGunPaint_MagicOffs (0x03e8)
1776
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
807
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
808 static int fmtProbeGunPaint(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
809 {
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
810 if (buf->len > fmtGunPaint_MagicOffs + fmtGunPaint_MagicLen &&
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
811 dmCompareAddr16(buf, 0, fmt->addr) &&
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
812 memcmp(buf->data + fmtGunPaint_MagicOffs + 2, fmtGunPaint_MagicID, fmtGunPaint_MagicLen) == 0)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
813 return DM_PROBE_SCORE_MAX;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
814
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
815 return DM_PROBE_SCORE_FALSE;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
816 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
817
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
818
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
819 static int fmtEncodeGunPaint(const DMC64EncDecOp *op, DMGrowBuf *buf,
1984
e7f2ddaf94a6 Change encode and decode function format parameter type from DMC64ImageFormat to DMC64ImageCommonFormat.
Matti Hamalainen <ccr@tnsp.org>
parents: 1983
diff changeset
820 const DMC64Image *img, const DMC64ImageCommonFormat *fmt)
1776
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
821 {
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
822 (void) op;
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
823 (void) img;
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
824 (void) fmt;
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
825
1946
c30dfd5e3227 Add a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 1941
diff changeset
826 // Here we assume that the op triggering this function is
c30dfd5e3227 Add a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 1941
diff changeset
827 // at the end of the oplist, so the memory is allocated,
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
828 memcpy(buf->data + fmtGunPaint_MagicOffs + 2, fmtGunPaint_MagicID, fmtGunPaint_MagicLen);
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
829
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
830 return DMERR_OK;
1776
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
831 }
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
832
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
833
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
834 static int fmtProbeAmicaPaintPacked(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
835 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
836 size_t i, n;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
837
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
838 if (buf->len < 256 || !dmCompareAddr16(buf, 0, fmt->addr))
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
839 return DM_PROBE_SCORE_FALSE;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
840
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
841 // Interpaint Hi-Res gives a false positive
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
842 // as do some GunPaint images ..
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
843 if (buf->len == 9002 ||
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
844 fmtProbeGunPaint(buf, fmt) > DM_PROBE_SCORE_GOOD)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
845 return DM_PROBE_SCORE_FALSE;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
846
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
847 for (n = 0, i = 2; i < buf->len; i++)
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
848 if (buf->data[i] == 0xC2) n++;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
849
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
850 if (n > 50)
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
851 return DM_PROBE_SCORE_GOOD;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
852 if (n > 25)
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
853 return DM_PROBE_SCORE_AVG;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
854 if (n > 10)
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
855 return DM_PROBE_SCORE_MAYBE;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
856
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
857 return DM_PROBE_SCORE_FALSE;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
858 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
859
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
860
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
861 static int fmtDecodeAmicaPaintPacked(DMC64Image *img, const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
862 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
863 int res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
864 DMGrowBuf mem, tmp;
1505
3265175b24d2 Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents: 1503
diff changeset
865 DMCompParams cfg;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
866
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
867 // Amica Paint apparently is broken and stores one byte less than it should
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
868 // so we need to do some crappy buffer expansion here ..
1751
768fddda73e9 Convert fmtDecodeAmicaPaintPacked() to use the new DMGrowBuf functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1749
diff changeset
869 if (dmGrowBufCopy(&tmp, buf, 1) == NULL)
768fddda73e9 Convert fmtDecodeAmicaPaintPacked() to use the new DMGrowBuf functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1749
diff changeset
870 return DMERR_MALLOC;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
871
1751
768fddda73e9 Convert fmtDecodeAmicaPaintPacked() to use the new DMGrowBuf functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1749
diff changeset
872 tmp.len = tmp.size;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
873
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
874 // Now do an RLE decode on the enlarged buffer
1711
4fd94bf558b3 Add function name field to DMCompParams struct and set it in places where we use DMCompParams.
Matti Hamalainen <ccr@tnsp.org>
parents: 1707
diff changeset
875 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
876 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
877 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
878 cfg.rleMarkerB = 0xC2;
1650
9233da9de92c Refactor RLE encoding a bit, and add support for 16bit run counts and make things more configurable.
Matti Hamalainen <ccr@tnsp.org>
parents: 1649
diff changeset
879
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
880 if ((res = dmDecodeGenericRLEAlloc(&mem, &tmp, &cfg)) != DMERR_OK)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
881 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
882
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
883 // And finally decode to bitmap struct
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
884 res = dmC64DecodeGenericBMP(img, &mem, fmt);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
885
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
886 out:
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
887 dmGrowBufFree(&tmp);
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
888 dmGrowBufFree(&mem);
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
889 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
890 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
891
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
892
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
893 static int fmtEncodeAmicaPaintPacked(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt)
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
894 {
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
895 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
896 DMGrowBuf mem;
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
897 DMCompParams cfg;
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
898
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
899 // Encode the data to temp buffer
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
900 if ((res = dmC64EncodeGenericBMP(TRUE, &mem, img, fmt)) != DMERR_OK)
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
901 goto out;
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
902
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
903 // And now RLE compress the data to the existing buffer
1711
4fd94bf558b3 Add function name field to DMCompParams struct and set it in places where we use DMCompParams.
Matti Hamalainen <ccr@tnsp.org>
parents: 1707
diff changeset
904 cfg.func = fmt->name;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
905 cfg.type = DM_COMP_RLE_MARKER;
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
906 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
907 cfg.rleMarkerB = 0xC2;
1855
5e33f367bafe Adjust the minimum byte run RLE counts from 3 to 4.
Matti Hamalainen <ccr@tnsp.org>
parents: 1854
diff changeset
908 cfg.rleMinCountB = 4;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
909 cfg.rleMaxCountB = 255;
1650
9233da9de92c Refactor RLE encoding a bit, and add support for 16bit run counts and make things more configurable.
Matti Hamalainen <ccr@tnsp.org>
parents: 1649
diff changeset
910
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
911 res = dmEncodeGenericRLE(buf, &mem, &cfg);
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
912
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
913 out:
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
914 dmGrowBufFree(&mem);
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
915 return res;
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
916 }
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
917
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
918
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
919 static int fmtProbeSaracenPaint(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1772
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
920 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
921 if ((buf->len == 10219 || buf->len == 10220) &&
1772
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
922 dmCompareAddr16(buf, 0, fmt->addr))
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
923 return DM_PROBE_SCORE_GOOD;
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
924
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
925 return DM_PROBE_SCORE_FALSE;
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
926 }
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
927
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
928
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
929 static int fmtGetPixelFLIDesigner(DMC64ScanLine *scan,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
930 const DMC64Image *img, const int rasterX, const int rasterY)
1806
dcb12cd340d3 Add missing Pentel Paint getpixel function.
Matti Hamalainen <ccr@tnsp.org>
parents: 1805
diff changeset
931 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
932 DM_C64_GENERIC_MC_PIXEL_DEFS(img)
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
933
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
934 return dmC64GetGenericMCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
935 bmoffs, scroffs,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
936 vshift, rasterY & 7,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
937 0, 0, img->bgcolor);
1806
dcb12cd340d3 Add missing Pentel Paint getpixel function.
Matti Hamalainen <ccr@tnsp.org>
parents: 1805
diff changeset
938 }
dcb12cd340d3 Add missing Pentel Paint getpixel function.
Matti Hamalainen <ccr@tnsp.org>
parents: 1805
diff changeset
939
dcb12cd340d3 Add missing Pentel Paint getpixel function.
Matti Hamalainen <ccr@tnsp.org>
parents: 1805
diff changeset
940
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
941 static int fmtProbeBlackMailFLIPacked(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
942 {
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
943 if (buf->len > 16 &&
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
944 dmCompareAddr16(buf, 0, fmt->addr) &&
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
945 dmCompareAddr16(buf, 2 + 1, fmt->addr + buf->len - 3) &&
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
946 dmCompareAddr16(buf, 2 + 3, 0x7f3f))
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
947 return DM_PROBE_SCORE_MAX;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
948
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
949 return DM_PROBE_SCORE_FALSE;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
950 }
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
951
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
952
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
953 static int fmtDecodeBlackMailFLIPacked(DMC64Image *img, const DMGrowBuf *psrc, const DMC64ImageFormat *fmt)
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
954 {
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
955 int res;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
956 DMGrowBuf dst, src;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
957 DMCompParams cfg;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
958
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
959 cfg.func = fmt->name;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
960 cfg.type = DM_COMP_RLE_MARKER;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
961 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1 | DM_RLE_ZERO_COUNT_MAX |
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
962 DM_RLE_BACKWARDS_INPUT | DM_RLE_BACKWARDS_OUTPUT | DM_OUT_CROP_END;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
963 cfg.rleMarkerB = psrc->data[0];
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
964 cfg.cropOutLen = 0x4442 - 2; // Crop to unpacked size - load address
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
965
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
966 // Skip the RLE marker byte, packed data end address and unpacked data end address
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
967 dmGrowBufConstCopyOffs(&src, psrc, 1 + 2 + 2);
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
968
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
969 if ((res = dmDecodeGenericRLEAlloc(&dst, &src, &cfg)) != DMERR_OK)
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
970 goto out;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
971
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
972 res = dmC64DecodeGenericBMP(img, &dst, fmt);
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
973
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
974 out:
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
975 dmGrowBufFree(&dst);
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
976 return res;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
977 }
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
978
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
979
1832
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
980 static int fmtEncodeBlackMailFLIPacked(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt)
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
981 {
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
982 int res;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
983 DMGrowBuf tmp1, tmp2;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
984 DMCompParams cfg;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
985
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
986 dmGrowBufInit(&tmp1);
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
987 dmGrowBufInit(&tmp2);
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
988
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
989 // Encode the data to temp buffer
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
990 if ((res = dmC64EncodeGenericBMP(TRUE, &tmp1, img, fmt)) != DMERR_OK)
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
991 goto out;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
992
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
993 // And now RLE compress the data to the existing buffer
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
994 cfg.func = fmt->name;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
995 cfg.type = DM_COMP_RLE_MARKER;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
996 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1 | DM_RLE_ZERO_COUNT_MAX |
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
997 DM_RLE_BACKWARDS_INPUT | DM_RLE_BACKWARDS_OUTPUT;
1855
5e33f367bafe Adjust the minimum byte run RLE counts from 3 to 4.
Matti Hamalainen <ccr@tnsp.org>
parents: 1854
diff changeset
998 cfg.rleMinCountB = 4;
1832
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
999 cfg.rleMaxCountB = 256; // this format allows 256 byte runs with ZERO_COUNT_MAX
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1000
2329
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
1001 if ((res = dmGenericRLEAnalyze(&tmp1, &cfg)) != DMERR_OK)
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
1002 goto out;
1832
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1003
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1004 if ((res = dmEncodeGenericRLEAlloc(&tmp2, &tmp1, &cfg)) != DMERR_OK)
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1005 goto out;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1006
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1007 // Now, finally we must put in the header etc.
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1008 if (!dmGrowBufPutU8(buf, cfg.rleMarkerB) ||
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1009 !dmGrowBufPutU16LE(buf, fmt->addr + tmp2.len + 4) ||
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1010 !dmGrowBufPutU16LE(buf, 0x7f3f) ||
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1011 !dmGrowBufPut(buf, tmp2.data, tmp2.len))
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1012 {
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1013 res = DMERR_MALLOC;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1014 goto out;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1015 }
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1016
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1017 out:
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1018 dmGrowBufFree(&tmp1);
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1019 dmGrowBufFree(&tmp2);
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1020 return res;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1021 }
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1022
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1023
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1024 static int fmtGetPixelBlackMailFLI(DMC64ScanLine *scan,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1025 const DMC64Image *img, const int rasterX, const int rasterY)
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1026 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1027 DM_C64_GENERIC_MC_PIXEL_DEFS(img)
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1028
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1029 Uint8 bgcol = (unsigned) rasterY < img->extraData[0].size ?
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1030 img->extraData[0].data[rasterY] : img->bgcolor;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1031
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1032 return dmC64GetGenericMCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1033 bmoffs, scroffs,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1034 vshift, rasterY & 7,
2222
75b5bb490f38 Add & 15 to deeper helper functions and remove it from unnecessary places.
Matti Hamalainen <ccr@tnsp.org>
parents: 2208
diff changeset
1035 0, 0, bgcol);
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1036 }
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1037
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1038
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1039 static int fmtGetPixelTruePaint(DMC64ScanLine *scan,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1040 const DMC64Image *img, const int rasterX, const int rasterY)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1041 {
2313
866e036d7706 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2311
diff changeset
1042 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
866e036d7706 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2311
diff changeset
1043 (void) vshift;
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1044
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1045 return dmC64GetGenericMCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1046 bmoffs, scroffs,
2313
866e036d7706 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2311
diff changeset
1047 6 - (rasterX & 6), 0,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1048 rasterX & 1, 0, img->bgcolor);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1049 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1050
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1051
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1052 static int fmtProbeTruePaintPacked(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1053 {
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1054 // The beginning/un-changing part of the BASIC bootstrap and
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1055 // relocation of decompression code
1684
e7990551c6d6 Rename function variable.
Matti Hamalainen <ccr@tnsp.org>
parents: 1671
diff changeset
1056 static const Uint8 magicID[] = {
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1057 0x0b, 0x08, 0x09, 0x00, 0x9e, 0x32, 0x30, 0x35,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1058 0x39, 0x00, 0xa2, 0x00, 0x78, 0xbd, 0x1c, 0x08,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1059 0x9d, 0xf5, 0x00, 0xe8, 0xd0, 0xf7, 0xe6, 0x01,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1060 0x4c, 0x01, 0x01, 0xa5, 0xfe, 0xd0, 0x02, 0xc6,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1061 0xff, 0xc6, 0xfe
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1062 };
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1063
1789
9f5c5ab0e85e Adjust True Paint probing to be slightly more forgiving vs. file size.
Matti Hamalainen <ccr@tnsp.org>
parents: 1788
diff changeset
1064 if (buf->len >= 320 &&
9f5c5ab0e85e Adjust True Paint probing to be slightly more forgiving vs. file size.
Matti Hamalainen <ccr@tnsp.org>
parents: 1788
diff changeset
1065 dmCompareAddr16(buf, 0, fmt->addr) &&
2080
7e4087e2740d Define macros DM_MEMCMP_SIZE() and DM_MEMCMP_LEN() as helpers.
Matti Hamalainen <ccr@tnsp.org>
parents: 2056
diff changeset
1066 DM_MEMCMP_SIZE(buf->data + 2, magicID) == 0)
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1067 return DM_PROBE_SCORE_MAX;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1068
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1069 return DM_PROBE_SCORE_FALSE;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1070 }
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1071
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1072
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1073 //
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1074 // Based on disassembly of the depacker routine. Encoding seems to be
1714
95317672ff00 Improve a comment on TruePaint encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1712
diff changeset
1075 // some kind of "improved RLE" variant with different modes and a
95317672ff00 Improve a comment on TruePaint encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1712
diff changeset
1076 // simplistic "codebook".
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1077 //
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1078 static int fmtTruePaintGetByte(DMGrowBuf *src, Uint8 *data, const int mode)
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1079 {
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1080 if (!dmGrowBufGetU8(src, data))
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1081 {
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1082 return dmError(DMERR_INVALID_DATA,
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1083 "TruePaintRLE: Out of input data (N=%d)\n", mode);
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1084 }
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1085 else
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1086 return DMERR_OK;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1087 }
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1088
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1089
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1090 static int fmtDecodeTruePaintPacked(DMC64Image *img, const DMGrowBuf *psrc, const DMC64ImageFormat *fmt)
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1091 {
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1092 int res = DMERR_OK;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1093 const Uint8 *codeBook1, *codeBook2;
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1094 DMGrowBuf dst, src;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1095 DMCompParams cfg;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1096 Uint8 data;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1097
1724
12504f179749 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1723
diff changeset
1098 // 1b7e-67e8 decoded by original depacker
12504f179749 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1723
diff changeset
1099 // 1c00-67e8 is the actual area used tho
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1100 cfg.func = fmt->name;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1101 cfg.type = DM_COMP_RLE_MARKER;
1724
12504f179749 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1723
diff changeset
1102 cfg.flags = DM_RLE_BACKWARDS_OUTPUT | DM_RLE_BACKWARDS_INPUT | DM_OUT_CROP_END;
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1103 cfg.rleMarkerB = 0xfe;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1104 cfg.cropOutLen = 0x67e8 - 0x1c00;
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1105
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1106 // Codebooks: #1 is trampoline table markers, #2 is RLE data table
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1107 codeBook1 = psrc->data + 0x81 - 2;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1108 codeBook2 = psrc->data + 0x85 - 2;
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1109
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1110 // Allocate output buffer
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1111 if ((res = dmGrowBufAlloc(&dst, 64*1024, 4*1024)) != DMERR_OK)
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1112 goto out;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1113
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1114 // As we need to modify the offs, etc. but not the data,
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1115 // we will just make a shallow copy of the DMGrowBuf struct
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1116 dmGrowBufConstCopy(&src, psrc);
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1117 dmSetupRLEBuffers(&dst, &src, &cfg);
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1118
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1119 while ((res = fmtTruePaintGetByte(&src, &data, -1)) == DMERR_OK)
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1120 {
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1121 unsigned int count = 1;
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1122 BOOL found = FALSE;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1123
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1124 for (int n = 0; n < 8; n++)
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1125 if (codeBook1[n] == data && !found)
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1126 {
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1127 found = TRUE;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1128 switch (n)
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1129 {
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1130 case 4: // Y = 4, JTO = $0B
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1131 if ((res = fmtTruePaintGetByte(&src, &data, n)) != DMERR_OK)
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1132 goto out;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1133
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1134 count = data;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1135 if (data == 0)
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1136 goto finish;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1137
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1138 // fallthrough
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1139
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1140 case 1: // Y = 1, JTO = $17
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1141 count += 2;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1142 // fallthrough
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1143
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1144 case 0: // Y = 0, JTO = $19
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1145 if ((res = fmtTruePaintGetByte(&src, &data, n)) != DMERR_OK)
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1146 goto out;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1147 break;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1148
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1149 case 2: // Y = 2, JTO = $07
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1150 if ((res = fmtTruePaintGetByte(&src, &data, n)) != DMERR_OK)
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1151 goto out;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1152
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1153 count = data;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1154 // fallthrough
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1155
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1156 case 3: // Y = 3, JTO = $0B
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1157 count += 2;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1158 data = 0;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1159 break;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1160
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1161 default: // Y = [5..8], JTO = $00
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1162 count++;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1163 data = codeBook2[n];
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1164 break;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1165 }
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1166 }
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1167
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1168 if ((res = dmGenericRLEOutputRun(&dst, &cfg, data, count)) != DMERR_OK)
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1169 goto out;
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1170 }
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1171
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1172 finish:
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1173 dmFinishRLEBuffers(&dst, &src, &cfg);
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1174 res = dmC64DecodeGenericBMP(img, &dst, fmt);
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1175
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1176 out:
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1177 dmGrowBufFree(&dst);
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1178 return res;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1179 }
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1180
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1181
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1182 static int fmtGetPixelFlinterlazer(DMC64ScanLine *scan,
2299
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1183 const DMC64Image *img, const int rasterX, const int rasterY)
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1184 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1185 DM_C64_GENERIC_MC_PIXEL_DEFS(img)
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1186 const int vbank = rasterY & 7;
2302
7c26b5f86ff7 Cosmetic.
Matti Hamalainen <ccr@tnsp.org>
parents: 2301
diff changeset
1187 Uint8 color1, color2, bgcol = img->bgcolor;
2299
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1188 int res;
2300
a494e4a4b6bc Minor improvements to Flinterlazer support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2299
diff changeset
1189
a494e4a4b6bc Minor improvements to Flinterlazer support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2299
diff changeset
1190 if ((res = dmC64GetGenericMCPixel(&color1, img, bmoffs, scroffs, vshift, vbank , 0, 0, bgcol)) != DMERR_OK ||
a494e4a4b6bc Minor improvements to Flinterlazer support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2299
diff changeset
1191 (res = dmC64GetGenericMCPixel(&color2, img, bmoffs, scroffs, vshift, vbank + 8, 1, 0, bgcol)) != DMERR_OK)
2299
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1192 return res;
2300
a494e4a4b6bc Minor improvements to Flinterlazer support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2299
diff changeset
1193
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1194 *(scan->col) = (color1 * D64_NCOLORS) + color2;
2299
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1195 return DMERR_OK;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1196 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1197
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1198
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1199 enum
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1200 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1201 I_BRK = 0x00,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1202 I_RTS = 0x60,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1203 I_LDA_IMD = 0xa9,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1204 I_STA_ABS = 0x8d,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1205 };
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1206
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1207
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1208 static int fmtDecode6502SpeedCode(const DMGrowBuf *buf, DMC64Image *img, const int cbank)
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1209 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1210 size_t reg_pc = 0;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1211 Uint8 reg_accu = 0;//, reg_x = 0, reg_y = 0;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1212 Uint16 reg_ptr;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1213
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1214 while (reg_pc < buf->size)
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1215 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1216 Uint8 instr = buf->data[reg_pc++];
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1217
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1218 switch (instr)
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1219 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1220 case I_LDA_IMD:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1221 if (reg_pc >= buf->size)
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1222 goto out;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1223
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1224 reg_accu = buf->data[reg_pc++];
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1225 break;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1226
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1227 case I_STA_ABS:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1228 if (reg_pc >= buf->size)
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1229 goto out;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1230 reg_ptr = buf->data[reg_pc++];
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1231
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1232 if (reg_pc >= buf->size)
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1233 goto out;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1234 reg_ptr |= buf->data[reg_pc++] << 8;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1235
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1236 if (reg_ptr >= 0xd800 && reg_ptr <= 0xdbff)
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1237 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1238 img->color[cbank].data[reg_ptr - 0xd800] = reg_accu;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1239 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1240 break;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1241
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1242 case I_RTS:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1243 return DMERR_OK;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1244
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1245 default:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1246 return DMERR_INVALID_DATA;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1247 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1248 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1249
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1250 out:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1251 return DMERR_INVALID_DATA;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1252 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1253
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1254
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1255 static int fmtDecodeFlinterlazer(const DMC64EncDecOp *op, DMC64Image *img,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1256 const DMGrowBuf *buf, const DMC64ImageCommonFormat *fmt)
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1257 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1258 DMGrowBuf tmp;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1259 (void) op;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1260 (void) fmt;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1261
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1262 // Flinterlazer stores color RAMs as speedcode, so we need to
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1263 // decode some 6510 instructions to get the data.
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1264 return fmtDecode6502SpeedCode(
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1265 dmGrowBufConstCopyOffsSize(&tmp, buf, 0, 0x17b2), img, 0);
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1266 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1267
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1268
1668
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1665
diff changeset
1269 #define XX2_MIN_SIZE 4000
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1665
diff changeset
1270 #define XX2_WIDTH_CH 40
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1665
diff changeset
1271 #define XX2_HEIGHT_CH 10
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1665
diff changeset
1272 #define XX2_SIZE (XX2_WIDTH_CH * XX2_HEIGHT_CH)
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1665
diff changeset
1273 #define XX2_BSIZE (XX2_SIZE * 8)
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1665
diff changeset
1274
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1275
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1276 static int fmtProbeFormatXX2(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1277 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1278 if (buf->len >= XX2_MIN_SIZE &&
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1279 buf->len <= XX2_MIN_SIZE + 8 &&
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1280 dmCompareAddr16(buf, 0, fmt->addr))
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1281 return DM_PROBE_SCORE_MAYBE;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1282
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1283 return DM_PROBE_SCORE_FALSE;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1284 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1285
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1286
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1287 static int fmtDecodeFormatXX2(DMC64Image *img, const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1288 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1289 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1290 DMGrowBuf tmp;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1291
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1292 // If there is only data for less than XX2_MIN_SIZE bytes,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1293 // allocate a buffer of that size and copy data there.
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1294 // Otherwise allocate len bytes.
1748
9c4b3fecc510 Use the new DMGrowBuf functions in XX2 format buffer enlarging.
Matti Hamalainen <ccr@tnsp.org>
parents: 1747
diff changeset
1295 if (dmGrowBufCopy(&tmp, buf, buf->len < XX2_MIN_SIZE ? XX2_MIN_SIZE - buf->len : 0) == NULL)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1296 return DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1297
1748
9c4b3fecc510 Use the new DMGrowBuf functions in XX2 format buffer enlarging.
Matti Hamalainen <ccr@tnsp.org>
parents: 1747
diff changeset
1298 tmp.len = tmp.size;
9c4b3fecc510 Use the new DMGrowBuf functions in XX2 format buffer enlarging.
Matti Hamalainen <ccr@tnsp.org>
parents: 1747
diff changeset
1299 res = dmC64DecodeGenericBMP(img, &tmp, fmt);
9c4b3fecc510 Use the new DMGrowBuf functions in XX2 format buffer enlarging.
Matti Hamalainen <ccr@tnsp.org>
parents: 1747
diff changeset
1300 dmGrowBufFree(&tmp);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1301 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1302 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1303
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1304
1812
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1305 static int fmtProbeCosmosDesignsHiresManager(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1306 {
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1307 if (buf->len > 32 && dmCompareAddr16(buf, 0, fmt->addr))
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1308 {
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1309 // Packed variant
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1310 if (fmt->size == 0 &&
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1311 dmCompareAddr16(buf, 2, fmt->addr + buf->len - 3) &&
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1312 dmCompareAddr16(buf, 4, 0x7ff2))
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1313 return DM_PROBE_SCORE_MAX;
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1314
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1315 // Unpacked variant
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1316 if (fmt->size != 0 && fmt->size == buf->len)
2168
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1317 {
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1318 // In the unpacked format the first 0x40 bytes should be 0xff
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1319 for (size_t offs = 2; offs < 0x42; offs++)
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1320 if (buf->data[offs] != 0xff)
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1321 return DM_PROBE_SCORE_GOOD;
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1322
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1323 return DM_PROBE_SCORE_MAX;
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1324 }
1812
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1325 }
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1326
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1327 return DM_PROBE_SCORE_FALSE;
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1328 }
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1329
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1330
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1331 static int fmtDecodeCosmosDesignsHiresManagerPacked(DMC64Image *img, const DMGrowBuf *psrc, const DMC64ImageFormat *fmt)
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1332 {
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1333 int res;
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1334 DMGrowBuf tmp;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1335 Uint8 data, *dstBuf;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1336 const size_t baseAddr = 0x4000;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1337 const size_t dstSize = 0x8000 - baseAddr;
2151
0a7ebb7198e3 Few additional cleanups in the CDHM decoder, and mark the format support as not-broken anymore.
Matti Hamalainen <ccr@tnsp.org>
parents: 2150
diff changeset
1338 size_t dstOffs, srcOffs, ncount;
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1339
2149
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1340 // Allocate output buffer
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1341 if ((dstBuf = dmMalloc0(dstSize)) == NULL)
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1342 {
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1343 return dmError(DMERR_MALLOC,
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1344 "Could not allocate memory for RLE decoding buffer.\n");
2149
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1345 }
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1346
2151
0a7ebb7198e3 Few additional cleanups in the CDHM decoder, and mark the format support as not-broken anymore.
Matti Hamalainen <ccr@tnsp.org>
parents: 2150
diff changeset
1347 // Setup input and output offsets
0a7ebb7198e3 Few additional cleanups in the CDHM decoder, and mark the format support as not-broken anymore.
Matti Hamalainen <ccr@tnsp.org>
parents: 2150
diff changeset
1348 srcOffs = psrc->len - 1;
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1349 dstOffs = 0x7ff2 - baseAddr - 1;
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1350
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1351 while (dstOffs > 0 && srcOffs > 0)
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1352 {
2151
0a7ebb7198e3 Few additional cleanups in the CDHM decoder, and mark the format support as not-broken anymore.
Matti Hamalainen <ccr@tnsp.org>
parents: 2150
diff changeset
1353 // Get one byte of data
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1354 data = psrc->data[srcOffs];
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1355
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1356 // Current data byte tells us the mode
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1357 if (data == 0)
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1358 {
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1359 // RLE run
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1360 if (srcOffs < 3)
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1361 {
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1362 res = dmError(DMERR_INVALID_DATA,
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1363 "RLE: Invalid data/out of data for run sequence.\n");
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1364 goto out;
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1365 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1366
2151
0a7ebb7198e3 Few additional cleanups in the CDHM decoder, and mark the format support as not-broken anymore.
Matti Hamalainen <ccr@tnsp.org>
parents: 2150
diff changeset
1367 ncount = psrc->data[--srcOffs];
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1368 data = psrc->data[--srcOffs];
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1369
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1370 if (dstOffs < ncount)
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1371 goto finish;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1372
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1373 dstOffs -= ncount;
2151
0a7ebb7198e3 Few additional cleanups in the CDHM decoder, and mark the format support as not-broken anymore.
Matti Hamalainen <ccr@tnsp.org>
parents: 2150
diff changeset
1374
0a7ebb7198e3 Few additional cleanups in the CDHM decoder, and mark the format support as not-broken anymore.
Matti Hamalainen <ccr@tnsp.org>
parents: 2150
diff changeset
1375 for (size_t n = 0; n < ncount + 1; n++)
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1376 dstBuf[dstOffs + n] = data;
2151
0a7ebb7198e3 Few additional cleanups in the CDHM decoder, and mark the format support as not-broken anymore.
Matti Hamalainen <ccr@tnsp.org>
parents: 2150
diff changeset
1377
0a7ebb7198e3 Few additional cleanups in the CDHM decoder, and mark the format support as not-broken anymore.
Matti Hamalainen <ccr@tnsp.org>
parents: 2150
diff changeset
1378 srcOffs--;
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1379 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1380 else
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1381 {
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1382 // Literal run of data bytes
2151
0a7ebb7198e3 Few additional cleanups in the CDHM decoder, and mark the format support as not-broken anymore.
Matti Hamalainen <ccr@tnsp.org>
parents: 2150
diff changeset
1383 ncount = data;
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1384 if (srcOffs < ncount)
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1385 ncount = srcOffs;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1386
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1387 if (dstOffs < ncount)
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1388 ncount = dstOffs;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1389
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1390 srcOffs -= ncount;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1391 dstOffs -= ncount - 1;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1392
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1393 for (size_t n = 0; n < ncount; n++)
2151
0a7ebb7198e3 Few additional cleanups in the CDHM decoder, and mark the format support as not-broken anymore.
Matti Hamalainen <ccr@tnsp.org>
parents: 2150
diff changeset
1394 dstBuf[dstOffs + n] = psrc->data[srcOffs + n];
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1395 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1396 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1397
2149
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1398 finish:
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1399
2152
44d7e8e2483c Add in some fixups that the original CDHM decoder does, although these seem to be unnecessary.
Matti Hamalainen <ccr@tnsp.org>
parents: 2151
diff changeset
1400 // Fixups that the original decoder does, not necessary really
44d7e8e2483c Add in some fixups that the original CDHM decoder does, although these seem to be unnecessary.
Matti Hamalainen <ccr@tnsp.org>
parents: 2151
diff changeset
1401 dstBuf[0x7ff0 - baseAddr] = 0x03;
44d7e8e2483c Add in some fixups that the original CDHM decoder does, although these seem to be unnecessary.
Matti Hamalainen <ccr@tnsp.org>
parents: 2151
diff changeset
1402 dstBuf[0x7ffe - baseAddr] = dstBuf[4];
44d7e8e2483c Add in some fixups that the original CDHM decoder does, although these seem to be unnecessary.
Matti Hamalainen <ccr@tnsp.org>
parents: 2151
diff changeset
1403
44d7e8e2483c Add in some fixups that the original CDHM decoder does, although these seem to be unnecessary.
Matti Hamalainen <ccr@tnsp.org>
parents: 2151
diff changeset
1404 for (size_t n = 0; n < 0x40; n++)
44d7e8e2483c Add in some fixups that the original CDHM decoder does, although these seem to be unnecessary.
Matti Hamalainen <ccr@tnsp.org>
parents: 2151
diff changeset
1405 dstBuf[n] = 0xff;
44d7e8e2483c Add in some fixups that the original CDHM decoder does, although these seem to be unnecessary.
Matti Hamalainen <ccr@tnsp.org>
parents: 2151
diff changeset
1406
44d7e8e2483c Add in some fixups that the original CDHM decoder does, although these seem to be unnecessary.
Matti Hamalainen <ccr@tnsp.org>
parents: 2151
diff changeset
1407 for (size_t n = 0; n < 0x100; n++)
44d7e8e2483c Add in some fixups that the original CDHM decoder does, although these seem to be unnecessary.
Matti Hamalainen <ccr@tnsp.org>
parents: 2151
diff changeset
1408 dstBuf[0x40 + n] = 0x00;
44d7e8e2483c Add in some fixups that the original CDHM decoder does, although these seem to be unnecessary.
Matti Hamalainen <ccr@tnsp.org>
parents: 2151
diff changeset
1409
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1410 res = dmC64DecodeGenericBMP(img, dmGrowBufConstCreateFrom(&tmp, dstBuf, dstSize), fmt);
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1411
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1412 out:
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1413 dmFree(dstBuf);
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1414 return res;
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1415 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1416
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1417
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1418 static const char *fmtFunPaint2_MagicID = "FUNPAINT (MT) ";
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1419 #define fmtFunPaint2_Header_Size (0x10)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1420
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1421
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1422 static int fmtProbeFunPaint2(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1423 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1424 if (buf->len > 30 &&
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1425 DM_MEMCMP_LEN(buf->data + 2, fmtFunPaint2_MagicID) == 0)
1777
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1426 {
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1427 // Unpacked variant
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1428 if (fmt->size != 0 && buf->data[14 + 2] == 0)
1777
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1429 return DM_PROBE_SCORE_MAX;
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1430
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1431 // Packed variant
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1432 if (fmt->size == 0 && buf->data[14 + 2] != 0)
1777
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1433 return DM_PROBE_SCORE_MAX;
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1434 }
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1435
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1436 return DM_PROBE_SCORE_FALSE;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1437 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1438
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1439
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1440 static int fmtDecodeFunPaint2(DMC64Image *img, const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1441 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1442 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1443 DMGrowBuf tmp;
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1444
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1445 // Check if the data is compressed
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1446 if (buf->data[14])
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1447 {
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1448 DMGrowBuf mem;
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1449 DMCompParams cfg;
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1450
1711
4fd94bf558b3 Add function name field to DMCompParams struct and set it in places where we use DMCompParams.
Matti Hamalainen <ccr@tnsp.org>
parents: 1707
diff changeset
1451 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
1452 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
1453 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
1454 cfg.rleMarkerB = buf->data[15];
1505
3265175b24d2 Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents: 1503
diff changeset
1455
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1456 dmGrowBufCopyOffs(&tmp, buf, fmtFunPaint2_Header_Size, 1);
1749
feaf5cf07603 Apparently Fun Paint 2 also saves one byte less than it should with the
Matti Hamalainen <ccr@tnsp.org>
parents: 1748
diff changeset
1457 tmp.len = tmp.size;
feaf5cf07603 Apparently Fun Paint 2 also saves one byte less than it should with the
Matti Hamalainen <ccr@tnsp.org>
parents: 1748
diff changeset
1458
1598
b5e0f28f1842 Adjust Fun Paint 2 decoding now that the RLE decoding is fixed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1594
diff changeset
1459 if ((res = dmDecodeGenericRLEAlloc(
1749
feaf5cf07603 Apparently Fun Paint 2 also saves one byte less than it should with the
Matti Hamalainen <ccr@tnsp.org>
parents: 1748
diff changeset
1460 &mem, &tmp, &cfg)) == DMERR_OK)
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1461 res = dmC64DecodeGenericBMP(img, &mem, fmt);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1462
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1463 dmGrowBufFree(&mem);
1749
feaf5cf07603 Apparently Fun Paint 2 also saves one byte less than it should with the
Matti Hamalainen <ccr@tnsp.org>
parents: 1748
diff changeset
1464 dmGrowBufFree(&tmp);
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1465 }
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1466 else
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1467 {
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1468 res = dmC64DecodeGenericBMP(img, dmGrowBufConstCopyOffs(&tmp, buf, fmtFunPaint2_Header_Size), fmt);
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1469 }
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1470
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1471 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1472 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1473
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1474
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1475 static int fmtEncodeFunPaint2Unpacked(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1476 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1477 // Add the header bits
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1478 if (!dmGrowBufPut(buf, (Uint8 *) fmtFunPaint2_MagicID, strlen(fmtFunPaint2_MagicID)) ||
1838
d02514ceed91 Fix Fun Paint 2 packed variant writing, it was missing one byte (the "is packed" flag).
Matti Hamalainen <ccr@tnsp.org>
parents: 1834
diff changeset
1479 !dmGrowBufPutU8(buf, 0) || // 0 == unpacked variant
d02514ceed91 Fix Fun Paint 2 packed variant writing, it was missing one byte (the "is packed" flag).
Matti Hamalainen <ccr@tnsp.org>
parents: 1834
diff changeset
1480 !dmGrowBufPutU8(buf, 0)) // RLE marker byte (not used in unpacked)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1481 return DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1482
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1483 return dmC64EncodeGenericBMP(FALSE, buf, img, fmt);
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1484 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1485
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1486
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1487 static int fmtEncodeFunPaint2Packed(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1488 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1489 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1490 DMGrowBuf mem;
1505
3265175b24d2 Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents: 1503
diff changeset
1491 DMCompParams cfg;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1492
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1493 // Encode the data to temp buffer
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1494 if ((res = dmC64EncodeGenericBMP(TRUE, &mem, img, fmt)) != DMERR_OK)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1495 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1496
1650
9233da9de92c Refactor RLE encoding a bit, and add support for 16bit run counts and make things more configurable.
Matti Hamalainen <ccr@tnsp.org>
parents: 1649
diff changeset
1497 // Analyze and setup RLE
1711
4fd94bf558b3 Add function name field to DMCompParams struct and set it in places where we use DMCompParams.
Matti Hamalainen <ccr@tnsp.org>
parents: 1707
diff changeset
1498 cfg.func = fmt->name;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
1499 cfg.type = DM_COMP_RLE_MARKER;
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
1500 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
1855
5e33f367bafe Adjust the minimum byte run RLE counts from 3 to 4.
Matti Hamalainen <ccr@tnsp.org>
parents: 1854
diff changeset
1501 cfg.rleMinCountB = 4;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
1502 cfg.rleMaxCountB = 255;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1503
2329
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
1504 if ((res = dmGenericRLEAnalyze(&mem, &cfg)) != DMERR_OK)
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
1505 goto out;
1661
dc3fbd130db7 RLE analyze was ran before setting up the compression config. Oops. Fixed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
1506
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1507 // Add the header bits
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1508 if (!dmGrowBufPut(buf, (Uint8 *) fmtFunPaint2_MagicID, strlen(fmtFunPaint2_MagicID)) ||
1838
d02514ceed91 Fix Fun Paint 2 packed variant writing, it was missing one byte (the "is packed" flag).
Matti Hamalainen <ccr@tnsp.org>
parents: 1834
diff changeset
1509 !dmGrowBufPutU8(buf, 1) || // non-zero == packed variant
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
1510 !dmGrowBufPutU8(buf, cfg.rleMarkerB))
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1511 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1512 res = DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1513 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1514 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1515
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1516 // And now RLE compress the data to the existing buffer
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1517 res = dmEncodeGenericRLE(buf, &mem, &cfg);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1518
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1519 out:
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1520 dmGrowBufFree(&mem);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1521 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1522 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1523
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1524
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1525 static int fmtGetPixelFunPaint2(DMC64ScanLine *scan,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1526 const DMC64Image *img, const int rasterX, const int rasterY)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1527 {
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1528 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1529 const int bitmap = rasterX & 1;
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1530 Uint8 bgcol = (unsigned) rasterY < img->extraData[0].size ?
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1531 img->extraData[0].data[rasterY] : img->bgcolor;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1532
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1533 (void) vshift;
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1534
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1535 return dmC64GetGenericMCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1536 bmoffs, scroffs,
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1537 6 - (rasterX & 6),
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1538 yb + (bitmap * 8),
2222
75b5bb490f38 Add & 15 to deeper helper functions and remove it from unnecessary places.
Matti Hamalainen <ccr@tnsp.org>
parents: 2208
diff changeset
1539 bitmap, 0, bgcol);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1540 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1541
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1542
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1543 static int fmtGetPixelBFLI(DMC64ScanLine *scan,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1544 const DMC64Image *img, const int rasterX, const int rasterY)
1582
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
1545 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1546 DM_C64_GENERIC_MC_PIXEL_DEFS(img)
1857
5d9dd663df8d Fix Pu-239 BFLI / BigFLI support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1856
diff changeset
1547 const int vbb = rasterY < 200 ? 0 : 1;
1764
52e31cfc1e36 Implement fake X raster position for the pixel getting functions. At some
Matti Hamalainen <ccr@tnsp.org>
parents: 1763
diff changeset
1548 const int vbank = (rasterY & 7) + (vbb * 8);
1582
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
1549
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1550 return dmC64GetGenericMCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1551 bmoffs & 0x1fff, scroffs & 0x3ff,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1552 vshift, vbank,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1553 vbb, 0, img->bgcolor);
1582
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
1554 }
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
1555
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
1556
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1557 static int fmtGetPixelPentelPaint(DMC64ScanLine *scan,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1558 const DMC64Image *img, const int rasterX, const int rasterY)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1559 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1560 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
2163
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1561 const int spr_y = rasterY / D64_SPR_HEIGHT_PX;
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1562 const int spr_yd = rasterY % D64_SPR_HEIGHT_PX;
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1563 const int spr_x = rasterX / D64_SPR_WIDTH_PX;
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
1564 const int spr_xd = (rasterX % D64_SPR_WIDTH_PX) / 8;
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
1565 const int offs = (spr_y * 8 + spr_x) * D64_SPR_SIZE + (spr_yd * D64_SPR_WIDTH_UT) + spr_xd;
1860
01d7feb9f9ce Some work on Pentel Paint sprite layer support. Does not work very well yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 1857
diff changeset
1566 const int mask = 1 << (7 - (rasterX & 7));
2163
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1567 int res;
1860
01d7feb9f9ce Some work on Pentel Paint sprite layer support. Does not work very well yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 1857
diff changeset
1568
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1569 Uint8 color1,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1570 color2 = img->extraData[0].data[offs] & mask ? 0x0f : 0,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1571 color3 = img->extraData[0].data[offs + D64_SPR_SIZE * 155] & mask ? img->d022 : 0;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1572
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1573 if ((res = dmC64GetGenericSCPixel(&color1, img, bmoffs, scroffs, vshift, 0, 0)) != DMERR_OK)
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1574 return res;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1575
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1576 *(scan->col) = color3 ? color3 : ( color2 ? color2 : color1 );
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1577 return DMERR_OK;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1578 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1579
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1580
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1581 // Horizontal character X-offset and scanline Y-offset
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1582 #define DM_CREST_SHFLI_IMG_XOFFS 14
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1583 #define DM_CREST_SHFLI_IMG_YOFFS 1
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1584
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1585 // True image width and height in character blocks
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1586 #define DM_CREST_SHFLI_IMG_WIDTH (4 * D64_SPR_WIDTH_UT)
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1587 #define DM_CREST_SHFLI_IMG_HEIGHT 21
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1588
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1589 #define DM_CREST_SHFLI_BANKS 8
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1590 #define DM_CREST_SHFLI_PTRS 8
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1591
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1592 static const Uint8 fmtCrestSHFLI_Sprite_pointers[DM_CREST_SHFLI_BANKS][DM_CREST_SHFLI_PTRS] =
2167
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1593 {
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1594 { 0x80, 0x84, 0x85, 0x89, 0x8A, 0x8E, 0x8F, 0x93 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1595 { 0x94, 0x98, 0x99, 0x9D, 0x9E, 0xA2, 0xA3, 0xA7 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1596 { 0xA8, 0xAC, 0xAD, 0xB1, 0xB2, 0xB6, 0xB7, 0xBB },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1597 { 0xBC, 0xC0, 0xC1, 0xC5, 0xC6, 0xCA, 0xCB, 0xCF },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1598 { 0xD0, 0xD4, 0xD5, 0xD9, 0xDA, 0xDE, 0xDF, 0xE3 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1599 { 0xE4, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1600 { 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1601 { 0xF7, 0x1E, 0x2E, 0x3E, 0x4E, 0x5E, 0x6E, 0x7E },
2167
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1602 };
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1603
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1604
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1605 static const Uint8 fmtCrestSHFLI_MagicID_Packed[] =
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1606 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1607 0x83, 0x92, 0x85, 0x93, 0x94,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1608 };
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1609
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1610
2167
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1611 static int fmtProbeCrestSHFLI(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1612 {
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1613 // Unpacked variant
2167
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1614 if (buf->len == fmt->size &&
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1615 dmCompareAddr16(buf, 0, fmt->addr))
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1616 {
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1617 int score = DM_PROBE_SCORE_MAYBE;
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1618 for (int nbank = 0; nbank < DM_CREST_SHFLI_BANKS; nbank++)
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1619 {
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1620 if (memcmp(buf->data + 2 + (nbank * 0x0400) + 0x03f8,
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1621 fmtCrestSHFLI_Sprite_pointers[nbank], DM_CREST_SHFLI_PTRS) == 0)
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1622 score += DM_PROBE_SCORE_GOOD;
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1623 }
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1624 return score;
2167
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1625 }
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1626
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1627 // Packed variant
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1628 if (dmCompareAddr16(buf, 0, fmt->addr) &&
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1629 buf->len > sizeof(fmtCrestSHFLI_MagicID_Packed) &&
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1630 DM_MEMCMP_SIZE(buf->data + buf->len - sizeof(fmtCrestSHFLI_MagicID_Packed), fmtCrestSHFLI_MagicID_Packed) == 0)
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1631 return DM_PROBE_SCORE_MAX;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1632
2167
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1633 return DM_PROBE_SCORE_FALSE;
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1634 }
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1635
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1636
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1637 static int fmtDecodeCrestSHFLIPacked(DMC64Image *img, const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1638 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1639 int res;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1640 DMGrowBuf tmp, mem;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1641 DMCompParams cfg;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1642
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1643 // Compression is typical RLE, with first byte being the RLE marker byte etc.
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1644 // However, as a difference to the uncompressed files, only the data of the
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1645 // 96 pixels wide area (4 sprite widths) x 168 tall is saved.
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1646 cfg.func = fmt->name;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1647 cfg.type = DM_COMP_RLE_MARKER;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1648 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1 | DM_RLE_ZERO_COUNT_MAX;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1649 cfg.rleMarkerB = buf->data[0];
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1650
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1651 if ((res = dmDecodeGenericRLEAlloc(
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1652 &mem, dmGrowBufConstCopyOffs(&tmp, buf, 1), &cfg)) == DMERR_OK)
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1653 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1654 const size_t fmtUncompSize = 0x1ff0;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1655 const size_t dstSize = 16 * 1024;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1656 Uint8 *dstBuf, *sptr, *dptr;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1657
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1658 // Check uncompressed size?
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1659 if (mem.len != fmtUncompSize)
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1660 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1661 res = dmError(DMERR_INVALID_DATA,
2389
647671a9a0b8 More printf() format specifier size_t -related fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2378
diff changeset
1662 "%s: Unexpected uncompressed data size %" DM_PRIu_SIZE_T
647671a9a0b8 More printf() format specifier size_t -related fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2378
diff changeset
1663 " bytes (should be %" DM_PRIu_SIZE_T ").\n",
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1664 cfg.func, mem.len, fmtUncompSize);
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1665 goto out;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1666 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1667
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1668 // Allocate output buffer
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1669 if ((dstBuf = dmMalloc0(dstSize)) == NULL)
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1670 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1671 res = dmError(DMERR_MALLOC,
2389
647671a9a0b8 More printf() format specifier size_t -related fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2378
diff changeset
1672 "%s: Could not allocate temporary memory buffer of %" DM_PRIu_SIZE_T " bytes.\n",
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1673 cfg.func, dstSize);
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1674 goto out;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1675 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1676
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1677 // Now that we have the uncompressed data (0x1ff0 bytes), we need to
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1678 // re-arrange it. The data is as follows ..
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1679 //
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1680 // 0x0000 - sprite data for 64 sprites
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1681 // 0x1000 - bitmap (12 * 21 bytes)
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1682 // 0x1800 - screen RAMs (12 * 21 bytes) x 8 banks
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1683 // 0x1fe8 - sprite color #1
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1684 // 0x1fe9 - sprite color #2
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1685 //
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1686
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1687 // Copy sprite colors
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1688 sptr = mem.data + 0x1fe8;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1689 dptr = dstBuf + 0x03e8;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1690 dptr[0] = sptr[0];
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1691 dptr[1] = sptr[1];
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1692
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1693 // First, clear and set some defaults that are not saved in the file
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1694 for (int nbank = 0; nbank < DM_CREST_SHFLI_BANKS; nbank++)
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1695 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1696 dptr = dstBuf + nbank * 0x0400;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1697
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1698 // Set preset screen RAM for other area
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1699 memset(dptr, 0xff, fmt->format->chWidth * fmt->format->chHeight);
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1700
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1701 // Copy sprite data points
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1702 memcpy(dptr + 0x03f8, &fmtCrestSHFLI_Sprite_pointers[nbank], DM_CREST_SHFLI_PTRS);
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1703 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1704
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1705 // Now we copy and transform the bitmap and screen RAM data.
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1706 for (int yc = 0; yc < DM_CREST_SHFLI_IMG_HEIGHT * 8; yc++)
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1707 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1708 const int syy = yc / 8;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1709 const int syd = yc & 7;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1710
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1711 // In the image the first visible scanline is unused, but in
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1712 // the compressed version data starts right away, so we offset
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1713 // the destination Y coordinate by one.
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1714 const int dyc = yc + DM_CREST_SHFLI_IMG_YOFFS;
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1715 const int dyy = dyc / 8;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1716 const int dyd = dyc & 7;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1717
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1718 // Format of the bitmap data is one horizontal pixel row (12 bytes)
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1719 // times 21*8 rows, e.g. the data is "linear" rows of bytes and not
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1720 // arranged in usual c64 bitmap "char" order. Thus we reorder it.
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1721 sptr = mem.data + 0x1000 + DM_CREST_SHFLI_IMG_WIDTH * (syd + 8 * syy);
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1722 dptr = dstBuf + 0x2000 + DM_CREST_SHFLI_IMG_XOFFS * 8 + (fmt->format->chWidth * dyy * 8) + dyd;
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1723
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1724 for (int xc = 0; xc < DM_CREST_SHFLI_IMG_WIDTH; xc++)
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1725 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1726 dptr[xc * 8] = sptr[xc];
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1727 sptr[xc] = 0xaa;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1728 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1729
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1730 // A bit similar arrangement is used for the screen RAM data.
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1731 // Each row of 12 bytes of data is for a bank. Next row is for
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1732 // next bank, etc.
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1733 sptr = mem.data + 0x1800 + DM_CREST_SHFLI_IMG_WIDTH * syd + DM_CREST_SHFLI_IMG_WIDTH * 8 * syy;
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1734 dptr = dstBuf + DM_CREST_SHFLI_IMG_XOFFS + 0x0400 * dyd + fmt->format->chWidth * dyy;
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1735
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1736 for (int xc = 0; xc < DM_CREST_SHFLI_IMG_WIDTH; xc++)
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1737 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1738 dptr[xc] = sptr[xc];
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1739 sptr[xc] = 0xaa;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1740 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1741 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1742
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1743 // The sprite data is also transformed similarly, data is
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1744 // in same scanline format as the bitmap. Thus we need to
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1745 // place it where it belongs based on the sprite pointers.
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1746 for (int yc = 0; yc < DM_CREST_SHFLI_IMG_HEIGHT * 8; yc++)
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1747 {
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1748 const int yd = yc % D64_SPR_HEIGHT_PX;
2190
0447f4c6c32b Fix a const discard issue.
Matti Hamalainen <ccr@tnsp.org>
parents: 2189
diff changeset
1749 const Uint8 *sprPtrs = fmtCrestSHFLI_Sprite_pointers[yc % 8];
0447f4c6c32b Fix a const discard issue.
Matti Hamalainen <ccr@tnsp.org>
parents: 2189
diff changeset
1750 Uint8 *sp1, *sp2, *dp;
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1751
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1752 dptr = dstBuf + D64_SPR_WIDTH_UT * yd;
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1753 sp1 = mem.data + DM_CREST_SHFLI_IMG_WIDTH * yc;
2191
488130151097 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2190
diff changeset
1754 sp2 = sp1 + 0x0800;
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1755
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1756 for (int xc = 0; xc < DM_CREST_SHFLI_IMG_WIDTH / D64_SPR_WIDTH_UT; xc++)
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1757 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1758 dp = dptr + D64_SPR_SIZE * sprPtrs[xc];
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1759 for (int xd = 0; xd < D64_SPR_WIDTH_UT; xd++)
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1760 dp[xd] = *sp1++;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1761
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1762 dp = dptr + D64_SPR_SIZE * sprPtrs[xc + 4];
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1763 for (int xd = 0; xd < D64_SPR_WIDTH_UT; xd++)
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1764 dp[xd] = *sp2++;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1765 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1766 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1767
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1768 res = dmC64DecodeGenericBMP(img, dmGrowBufConstCreateFrom(&tmp, dstBuf, dstSize), fmt);
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1769 dmFree(dstBuf);
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1770 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1771
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1772 out:
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1773 dmGrowBufFree(&mem);
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1774
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1775 return res;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1776 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1777
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1778
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1779 static int fmtGetSpritePixelCrestSHFLI(DMC64ScanLine *scan,
2165
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1780 const DMC64Image *img, const int sindex, const int cindex,
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1781 const int spr_xd, const int spr_yd, const int mask)
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1782 {
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1783 const size_t offs = sindex * D64_SPR_SIZE + (D64_SPR_WIDTH_UT * spr_yd) + spr_xd;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1784
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1785 if (offs >= img->extraData[14].size)
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1786 return DMERR_BOUNDS;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1787
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1788 if (img->extraData[14].data[offs] & mask)
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1789 {
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1790 *(scan->col) = img->extraData[15].data[cindex];
2165
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1791 return DMERR_OK;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1792 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1793
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1794 return -1;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1795 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1796
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1797
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1798 static int fmtGetPixelCrestSHFLI(DMC64ScanLine *scan,
2165
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1799 const DMC64Image *img, const int rasterX, const int rasterY)
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1800 {
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1801 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1802 const int sprOffsetX = DM_CREST_SHFLI_IMG_XOFFS * 8,
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1803 sprOffsetY = DM_CREST_SHFLI_IMG_YOFFS;
2165
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1804 const int nbank = rasterY & 7;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1805 int res;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1806
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1807 if (rasterY / 8 >= DM_CREST_SHFLI_IMG_HEIGHT)
2165
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1808 {
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1809 *(scan->col) = 0x0f;
2165
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1810 return DMERR_OK;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1811 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1812
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1813 if (rasterY >= sprOffsetY &&
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1814 rasterX >= sprOffsetX &&
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1815 rasterX < sprOffsetX + 4 * D64_SPR_WIDTH_PX)
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1816 {
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1817 const int localX = rasterX - sprOffsetX,
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1818 localY = rasterY - sprOffsetY;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1819 const int sbank = localY & 7;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1820 const int spr_yd = localY % D64_SPR_HEIGHT_PX;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1821 const int spr_x = localX / D64_SPR_WIDTH_PX;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1822 const int spr_xd = (localX % D64_SPR_WIDTH_PX) / 8;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1823 const int mask = 1 << (7 - (localX & 7));
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1824
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1825 const int spr_offs = spr_x & 3;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1826 const int spr_index1 = img->extraData[sbank].data[spr_offs];
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1827 const int spr_index2 = img->extraData[sbank].data[spr_offs + 4];
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1828
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1829 if ((res = fmtGetSpritePixelCrestSHFLI(scan, img, spr_index1, 0, spr_xd, spr_yd, mask)) == DMERR_OK ||
2165
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1830 res != -1)
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1831 return res;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1832
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1833 if ((res = fmtGetSpritePixelCrestSHFLI(scan, img, spr_index2, 1, spr_xd, spr_yd, mask)) == DMERR_OK ||
2165
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1834 res != -1)
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1835 return res;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1836 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1837
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1838 if ((res = dmC64GetGenericSCPixel(scan->col, img, bmoffs, scroffs, vshift, nbank, 0)) != DMERR_OK)
2165
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1839 return res;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1840
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1841 return DMERR_OK;
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1842 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1843
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1844
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1845 static int fmtGetPixelHCB(DMC64ScanLine *scan,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1846 const DMC64Image *img, const int rasterX, const int rasterY)
1876
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
1847 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1848 DM_C64_GENERIC_MC_PIXEL_DEFS(img)
1876
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
1849 const int vbank = (rasterY / 4) & 1;
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1850 const int ry = rasterY / 5;
1876
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
1851
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1852 Uint8 bgcol = (unsigned) ry < img->extraData[0].size ?
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1853 img->extraData[0].data[ry] : img->bgcolor;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1854
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1855 return dmC64GetGenericMCPixel(scan->col, img,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1856 bmoffs, scroffs,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1857 vshift, vbank,
2222
75b5bb490f38 Add & 15 to deeper helper functions and remove it from unnecessary places.
Matti Hamalainen <ccr@tnsp.org>
parents: 2208
diff changeset
1858 0, vbank, bgcol);
1876
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
1859 }
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
1860
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
1861
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1862 static int fmtGetPixelCrestHIFLIorCDHM(DMC64ScanLine *scan,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1863 const DMC64Image *img, const int rasterX, const int rasterY)
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1864 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1865 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1866
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1867 return dmC64GetGenericSCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1868 bmoffs, scroffs,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1869 vshift, rasterY & 7, 0);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1870 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1871
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1872
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1873 static int fmtGetPixelECI(DMC64ScanLine *scan,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1874 const DMC64Image *img, const int rasterX, const int rasterY)
1734
183d503b17a7 Implement support for hires FLI interlaced "ECI Graphic Editor 1.0 (unpacked)" format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1731
diff changeset
1875 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1876 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
1764
52e31cfc1e36 Implement fake X raster position for the pixel getting functions. At some
Matti Hamalainen <ccr@tnsp.org>
parents: 1763
diff changeset
1877 const int vbank = rasterY & 7;
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1878 Uint8 color1, color2;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1879 int res;
1734
183d503b17a7 Implement support for hires FLI interlaced "ECI Graphic Editor 1.0 (unpacked)" format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1731
diff changeset
1880
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1881 if ((res = dmC64GetGenericSCPixel(&color1, img, bmoffs, scroffs, vshift, vbank , 0)) != DMERR_OK ||
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1882 (res = dmC64GetGenericSCPixel(&color2, img, bmoffs, scroffs, vshift, vbank + 8, 1)) != DMERR_OK)
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1883 return res;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1884
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1885 *(scan->col) = (color1 * D64_NCOLORS) + color2;
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1886 return DMERR_OK;
1734
183d503b17a7 Implement support for hires FLI interlaced "ECI Graphic Editor 1.0 (unpacked)" format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1731
diff changeset
1887 }
183d503b17a7 Implement support for hires FLI interlaced "ECI Graphic Editor 1.0 (unpacked)" format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1731
diff changeset
1888
183d503b17a7 Implement support for hires FLI interlaced "ECI Graphic Editor 1.0 (unpacked)" format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1731
diff changeset
1889
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1890 static int fmtProbeECIPacked(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1739
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1891 {
2168
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1892 int score = DM_PROBE_SCORE_FALSE;
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1893
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1894 if (buf->len > 128 &&
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1895 dmCompareAddr16(buf, 0, fmt->addr))
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1896 {
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1897 size_t i, n;
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1898
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1899 // Count statistics about used byte values and compare to
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1900 // value in buf[2] which is the RLE marker
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1901 for (n = 0, i = 3; i < buf->len; i++)
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1902 if (buf->data[i] == buf->data[2]) n++;
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1903
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1904 if (n > 50)
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1905 score = DM_PROBE_SCORE_GOOD;
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1906 else
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1907 if (n > 25)
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1908 score = DM_PROBE_SCORE_AVG;
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1909 else
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1910 if (n > 10)
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1911 score = DM_PROBE_SCORE_MAYBE;
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1912 }
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1913
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1914 if (// Try to avoid misprobe of Crest Hires FLI Designer and Cosmos Design format
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1915 buf->len == 16386 ||
1979
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
1916 // Face Painter
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
1917 buf->len == 10004)
2168
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1918 score /= 3;
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1919
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1920 return score;
1739
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1921 }
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1922
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1923
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1924 static int fmtDecodeECIPacked(DMC64Image *img, const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1925 {
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1926 int res;
2170
7c4c9013e412 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2169
diff changeset
1927 DMGrowBuf mem, tmp;
1739
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1928 DMCompParams cfg;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1929
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1930 cfg.func = fmt->name;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1931 cfg.type = DM_COMP_RLE_MARKER;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1932 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1933 cfg.rleMarkerB = buf->data[0];
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1934
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1935 if ((res = dmDecodeGenericRLEAlloc(
1747
5e928618fdc8 Change DMGrowBuf API somewhat and implement more copy operations.
Matti Hamalainen <ccr@tnsp.org>
parents: 1746
diff changeset
1936 &mem, dmGrowBufConstCopyOffs(&tmp, buf, 1), &cfg)) == DMERR_OK)
1739
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1937 res = dmC64DecodeGenericBMP(img, &mem, fmt);
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1938
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1939 dmGrowBufFree(&mem);
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1940 return res;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1941 }
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1942
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1943
1912
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1944 static int fmtEncodeECIPacked(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt)
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1945 {
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1946 int res;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1947 DMGrowBuf tmp;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1948 DMCompParams cfg;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1949
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1950 // Encode the data to temp buffer
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1951 if ((res = dmC64EncodeGenericBMP(TRUE, &tmp, img, fmt)) != DMERR_OK)
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1952 goto out;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1953
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1954 // Analyze and setup RLE
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1955 cfg.func = fmt->name;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1956 cfg.type = DM_COMP_RLE_MARKER;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1957 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1958 cfg.rleMinCountB = 4;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1959 cfg.rleMaxCountB = 255;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1960
2331
6dc64deb6718 Missed on dmGenericRLEAnalyze() call from a previous commit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2329
diff changeset
1961 if ((res = dmGenericRLEAnalyze(&tmp, &cfg)) != DMERR_OK)
6dc64deb6718 Missed on dmGenericRLEAnalyze() call from a previous commit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2329
diff changeset
1962 goto out;
1912
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1963
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1964 // Add the header bits
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1965 if (!dmGrowBufPutU8(buf, cfg.rleMarkerB))
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1966 {
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1967 res = DMERR_MALLOC;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1968 goto out;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1969 }
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1970
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1971 // And now RLE compress the data to the existing buffer
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1972 res = dmEncodeGenericRLE(buf, &tmp, &cfg);
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1973
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1974 out:
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1975 dmGrowBufFree(&tmp);
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1976 return res;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1977 }
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1978
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1979
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1980 //
1795
c8d690e8f9e9 Fix some typos in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1792
diff changeset
1981 // Helper macros for defining screen memory layouts
c8d690e8f9e9 Fix some typos in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1792
diff changeset
1982 // common for several FLI type image formats
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1983 //
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
1984 #define DEF_REPEAT_BLOCK(dtype, start, oindex, bindex, osize, bsize, oflags) \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
1985 { DO_COPY, (dtype), (start) + ((osize) * (oindex)), (bindex), (bsize), 0, NULL, NULL, (oflags) }
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
1986
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
1987 #define DEF_REPEAT_BLOCK_8(dtype, start, sindex, osize, bsize, oflags) \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
1988 DEF_REPEAT_BLOCK((dtype), (start), 0, ((sindex) + 0), (osize), (bsize), (oflags)), \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
1989 DEF_REPEAT_BLOCK((dtype), (start), 1, ((sindex) + 1), (osize), (bsize), (oflags)), \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
1990 DEF_REPEAT_BLOCK((dtype), (start), 2, ((sindex) + 2), (osize), (bsize), (oflags)), \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
1991 DEF_REPEAT_BLOCK((dtype), (start), 3, ((sindex) + 3), (osize), (bsize), (oflags)), \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
1992 DEF_REPEAT_BLOCK((dtype), (start), 4, ((sindex) + 4), (osize), (bsize), (oflags)), \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
1993 DEF_REPEAT_BLOCK((dtype), (start), 5, ((sindex) + 5), (osize), (bsize), (oflags)), \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
1994 DEF_REPEAT_BLOCK((dtype), (start), 6, ((sindex) + 6), (osize), (bsize), (oflags)), \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
1995 DEF_REPEAT_BLOCK((dtype), (start), 7, ((sindex) + 7), (osize), (bsize), (oflags))
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1996
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
1997
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
1998 //
1861
752893fa6412 Update a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 1860
diff changeset
1999 // Many formats actually share memory layout and other specs, and there are
752893fa6412 Update a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 1860
diff changeset
2000 // packed and unpacked versions of several formats. We'll reuse these here
752893fa6412 Update a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 1860
diff changeset
2001 // through this common formats data array, referred from dmC64ImageFormats[]
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2002 //
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2003 DMC64ImageCommonFormat dmC64CommonFormats[] =
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2004 {
1815
2b68b6955635 Rename "Koala Paint" to "Koala Painter".
Matti Hamalainen <ccr@tnsp.org>
parents: 1813
diff changeset
2005 { // #0: Koala Painter type memory layout
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2006 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2007 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2008 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2009 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2010 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2011 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2012 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2013 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2014 { DO_COPY , DS_SCREEN_RAM , 0x1f40, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2015 { DO_COPY , DS_COLOR_RAM , 0x2328, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2016 { DO_SET_MEM_LO , DS_BGCOL , 0x2710, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2017 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2018 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2019 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2020
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2021 { // #1: Black Mail FLI Graph
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2022 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2023 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2024 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2025 2, 1,
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2026 NULL, NULL,
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2027 fmtGetPixelBlackMailFLI,
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2028 {
2294
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2029 { DO_COPY , DS_EXTRA_DATA , 0x0000, 0, 200 , 0, NULL, NULL, DF_NORMAL },
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2030 { DO_COPY , DS_COLOR_RAM , 0x0100, 0, 0 , 0, NULL, NULL, DF_NORMAL },
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2031 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x0500, 0, 0x400, 0, DF_NORMAL),
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2032 { DO_COPY , DS_BITMAP_RAM , 0x2500, 0, 0 , 0, NULL, NULL, DF_NORMAL },
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2033
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2034 { DO_SET_OP , DS_EXTRA_INFO , D64_FLI_8, 0 , 0, D64_EI_FLI_TYPE, NULL, NULL, DF_DECODE },
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2035 { DO_LAST , 0 , 0 , 0, 0 , 0, NULL, NULL, DF_NORMAL },
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2036 }
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2037 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2038
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2039 { // #2: Art Studio etc. Hires
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2040 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2041 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2042 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2043 1, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2044 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2045 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2046 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2047 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2048 { DO_COPY , DS_SCREEN_RAM , 0x1f40, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2049 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2050 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2051 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2052
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2053 { // #3: FunPaint II
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2054 D64_FMT_MC | D64_FMT_FLI | D64_FMT_ILACE,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2055 D64_SCR_WIDTH, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2056 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2057 1, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2058 NULL, NULL,
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2059 fmtGetPixelFunPaint2,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2060 {
2224
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2061 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x0000, 0, 0x400, 0, DF_NORMAL),
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2062 { DO_COPY , DS_BITMAP_RAM , 0x2000, 0, 0 , 0, NULL, NULL, DF_NORMAL },
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2063 { DO_COPY , DS_EXTRA_DATA , 0x3f48, 0, 100 , 0, NULL, NULL, DF_NORMAL },
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2064 { DO_COPY , DS_COLOR_RAM , 0x4000, 0, 0 , 0, NULL, NULL, DF_NORMAL },
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2065 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x43e8, 8, 0x400, 0, DF_NORMAL),
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2066 { DO_COPY , DS_BITMAP_RAM , 0x63e8, 1, 0 , 0, NULL, NULL, DF_NORMAL },
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2067 { DO_COPY , DS_EXTRA_DATA , 0x8328, 0, 100 , 100, NULL, NULL, DF_NORMAL },
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2068 { DO_SET_OP , DS_EXTRA_INFO , D64_ILACE_RES, 0 , 0 , D64_EI_ILACE_TYPE, NULL, NULL, DF_DECODE },
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2069 { DO_SET_OP , DS_EXTRA_INFO , D64_FLI_8, 0, 0, D64_EI_FLI_TYPE, NULL, NULL, DF_DECODE },
2224
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2070 { DO_LAST , 0 , 0 , 0, 0 , 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2071 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2072 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2073
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2074 { // #4: DrazPaint 1.x & 2
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2075 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2076 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2077 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2078 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2079 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2080 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2081 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2082 { DO_COPY , DS_COLOR_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2083 { DO_COPY , DS_BITMAP_RAM , 0x0800, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2084 { DO_COPY , DS_SCREEN_RAM , 0x0400, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2085 { DO_SET_MEM_LO , DS_BGCOL , 0x2740, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2086 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2087 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2088 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2089
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2090 { // #5: DrazLace 1.0
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2091 D64_FMT_MC | D64_FMT_ILACE,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2092 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2093 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2094 1, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2095 NULL, NULL,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
2096 fmtGetPixelDrazLace,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2097 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2098 { DO_COPY , DS_COLOR_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2099 { DO_COPY , DS_BITMAP_RAM , 0x0800, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2100 { DO_COPY , DS_SCREEN_RAM , 0x0400, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2101 { DO_SET_MEM_LO , DS_BGCOL , 0x2740, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2102 { DO_FUNC , 0 , 0x2742, 0, 1, 0, fmtDrazLaceGetLaceType, fmtDrazLaceSetLaceType, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2103 { DO_COPY , DS_BITMAP_RAM , 0x2800, 1, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2104 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2105 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2106 },
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2107
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2108 { // #6: TruePaint
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2109 D64_FMT_MC | D64_FMT_ILACE,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2110 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2111 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2112 1, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2113 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2114 fmtGetPixelTruePaint,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2115 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2116 { DO_COPY , DS_SCREEN_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2117 { DO_SET_MEM_LO , DS_BGCOL , 0x03e8, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2118 { DO_COPY , DS_BITMAP_RAM , 0x0400, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2119 { DO_COPY , DS_BITMAP_RAM , 0x2400, 1, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2120 { DO_COPY , DS_SCREEN_RAM , 0x4400, 1, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2121 { DO_COPY , DS_COLOR_RAM , 0x4800, 0, 0, 0, NULL, NULL, DF_NORMAL },
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2122 { DO_SET_OP , DS_EXTRA_INFO , D64_ILACE_RES, 0 , 0 , D64_EI_ILACE_TYPE, NULL, NULL, DF_DECODE },
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2123 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2124 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2125 },
1739
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2126
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2127 { // #7: ECI Graphic Editor Hires FLI
2224
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2128 D64_FMT_HIRES | D64_FMT_FLI | D64_FMT_ILACE,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2129 D64_SCR_WIDTH, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2130 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2131 1, 1,
2224
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2132 NULL, NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2133 fmtGetPixelECI,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2134 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2135 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2136 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x2000, 0, 0x400, 0, DF_NORMAL),
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2137 { DO_COPY , DS_BITMAP_RAM , 0x4000, 1, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2138 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x6000, 8, 0x400, 0, DF_NORMAL),
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2139 { DO_SET_OP , DS_EXTRA_INFO , D64_ILACE_COLOR, 0 , 0 , D64_EI_ILACE_TYPE, NULL, NULL, DF_DECODE },
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2140 { DO_SET_OP , DS_EXTRA_INFO , D64_FLI_8, 0, 0, D64_EI_FLI_TYPE, NULL, NULL, DF_DECODE },
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2141 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2142 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2143 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2144
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2145 { // #8: Cosmos Designs Hires Manager
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2146 D64_FMT_HIRES | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2147 D64_SCR_WIDTH, 24*8, // Actually 296 x 192 (=24*8)
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2148 D64_SCR_CH_WIDTH, 24,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2149 1, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2150 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2151 fmtGetPixelCrestHIFLIorCDHM,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2152 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2153 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2154 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x2000, 0, 0x400, 0, DF_NORMAL),
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2155 { DO_SET_OP , DS_EXTRA_INFO , D64_FLI_8, 0, 0, D64_EI_FLI_TYPE, NULL, NULL, DF_DECODE },
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2156 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2157 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2158 },
1834
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2159
2018
1c45b2fb471d Adjust a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 2015
diff changeset
2160 { // #9: FBI Crew FLI Designer 1.x & 2.0
1834
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2161 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2162 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2163 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2164 2, 1,
1834
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2165 NULL, NULL,
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2166 fmtGetPixelFLIDesigner,
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2167 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2168 { DO_COPY , DS_COLOR_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2169 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x0400, 0, 0x400, 0, DF_NORMAL),
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2170 { DO_COPY , DS_BITMAP_RAM , 0x2400, 0, 0, 0, NULL, NULL, DF_NORMAL },
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2171 { DO_SET_OP , DS_EXTRA_INFO , D64_FLI_8, 0, 0, D64_EI_FLI_TYPE, NULL, NULL, DF_DECODE },
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2172 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1834
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2173 }
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2174 },
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2175
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2176 { // #10: Doodle
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2177 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2178 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2179 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2180 1, 1,
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2181 NULL, NULL,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2182 NULL,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2183 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2184 { DO_COPY , DS_SCREEN_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2185 { DO_COPY , DS_BITMAP_RAM , 0x0400, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2186 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2187 }
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2188 },
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2190 { // #11: Crest Super Hires FLI Editor 1.0 (SHF)
2314
87533af8db64 Add format flag for formats that use sprite layer.
Matti Hamalainen <ccr@tnsp.org>
parents: 2313
diff changeset
2191 D64_FMT_HIRES | D64_FMT_FLI | D64_FMT_SPRITES,
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2192 D64_SCR_WIDTH, D64_SCR_HEIGHT,
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
2193 D64_SCR_CH_WIDTH, 24,
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2194 1, 1,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2195 NULL, NULL,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2196 fmtGetPixelCrestSHFLI,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2197 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2198 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x0000, 0 , 0x0400, 0x0400, DF_NORMAL),
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2199 DEF_REPEAT_BLOCK_8(DS_EXTRA_DATA, 0x03f8, 0 , 0x0400, 8, DF_DECODE), // Sprite pointers for each bank
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2200 { DO_COPY , DS_EXTRA_DATA , 0x03e8, 15 , 2 , 0, NULL, NULL, DF_DECODE }, // 2 sprite colors
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2201 { DO_COPY , DS_EXTRA_DATA , 0x0000, 14 , 0x3e00, 0, NULL, NULL, DF_DECODE }, // Lazily copy whole data for sprite data
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2202 { DO_COPY , DS_BITMAP_RAM , 0x2000, 0 , 0 , 0, NULL, NULL, DF_NORMAL },
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2203 { DO_SET_OP , DS_EXTRA_INFO , D64_FLI_8, 0, 0, D64_EI_FLI_TYPE, NULL, NULL, DF_DECODE },
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2204 { DO_LAST , 0 , 0 , 0 , 0 , 0, NULL, NULL, DF_NORMAL },
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2205 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2206 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2207 };
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2208
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2209
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2210 //
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2211 // Array with data for supported formats
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2212 //
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2213 DMC64ImageFormat dmC64ImageFormats[] =
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2214 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2215 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2216 "d2p", "DrazPaint 1.4/2.0 (packed)", 0x5800, 0, 0, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2217 fmtProbeDrazPaint20Packed,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2218 fmtDecodeDrazPaintPacked, fmtEncodeDrazPaintPacked,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2219 { }, &dmC64CommonFormats[4]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2220 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2221
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2222 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2223 "drp", "DrazPaint (unpacked)", 0x5800, 10051, 0, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2224 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2225 NULL, NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2226 { }, &dmC64CommonFormats[4]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2227 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2228
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2229 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2230 "dlp", "DrazLace 1.0 (packed)", 0x5800, 0, 0, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2231 fmtProbeDrazLace10Packed,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2232 fmtDecodeDrazPaintPacked, fmtEncodeDrazPaintPacked,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2233 { }, &dmC64CommonFormats[5]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2234 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2235
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2236 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2237 "drl", "DrazLace 1.0 (unpacked)", 0x5800, 18242, 0, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2238 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2239 NULL, NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2240 { }, &dmC64CommonFormats[5]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2241 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2242
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2243 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2244 "bdp5", "Boogie Down Paint 5 (packed)", 0x5000, 0, 0, DM_FMT_RDWR,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2245 fmtProbeBDP5Packed,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2246 fmtDecodeBDP5Packed, fmtEncodeBDP5Packed,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2247 { }, &dmC64CommonFormats[0] // Memory format is same as Koala
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2248 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2249
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2250 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2251 "vid", "Vidcom 64 (unpacked)", 0x5800, 10050, 0, DM_FMT_RDWR,
1574
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2252 NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2253 NULL, NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2254 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2255 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2256 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2257 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2258 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2259 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2260 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2261 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2262 { DO_COPY , DS_COLOR_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2263 { DO_SET_MEM_LO , DS_BGCOL , 0x07e8, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2264 { DO_COPY , DS_BITMAP_RAM , 0x0800, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2265 { DO_COPY , DS_SCREEN_RAM , 0x0400, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2266 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2267 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2268 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2269 NULL
1574
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2270 },
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2271
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2272 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2273 "p64", "Picasso 64 (unpacked)", 0x1800, 10050, 0, DM_FMT_RDWR,
1574
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2274 NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2275 NULL, NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2276 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2277 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2278 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2279 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2280 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2281 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2282 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2283 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2284 { DO_COPY , DS_COLOR_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2285 { DO_SET_MEM_LO , DS_BGCOL , 0x07fe, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2286 { DO_COPY , DS_BITMAP_RAM , 0x0800, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2287 { DO_COPY , DS_SCREEN_RAM , 0x0400, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2288 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2289 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2290 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2291 NULL
1574
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2292 },
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2293
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2294 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2295 "mci", "Truepaint (unpacked)", 0x9c00, 19434, 0, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2296 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2297 NULL, NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2298 { }, &dmC64CommonFormats[6]
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2299 },
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2300
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2301 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2302 "mcip", "Truepaint (packed)", 0x0801, 0, 0, DM_FMT_RD,
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2303 fmtProbeTruePaintPacked,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2304 fmtDecodeTruePaintPacked, NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2305 { }, &dmC64CommonFormats[6]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2306 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2307
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2308 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2309 "kla", "Koala Painter (unpacked)", 0x6000, 10003, 0, DM_FMT_RDWR,
2015
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
2310 fmtProbeKoalaPainter,
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2311 NULL, NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2312 { }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2313 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2314
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2315 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2316 "klp", "Koala Painter (packed)", 0x6000, 0, 0xfe, DM_FMT_RDWR,
1815
2b68b6955635 Rename "Koala Paint" to "Koala Painter".
Matti Hamalainen <ccr@tnsp.org>
parents: 1813
diff changeset
2317 fmtProbeKoalaPainterPacked,
1839
666b27999570 As the Koala Painter plain RLE compression (without headers and static
Matti Hamalainen <ccr@tnsp.org>
parents: 1838
diff changeset
2318 fmtDecodeStaticRLEMarkerMode2, fmtEncodeStaticRLEMarkerMode2,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2319 { }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2320 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2321
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2322 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2323 "aas", "Advanced Art Studio (unpacked)", 0x2000, 10018, 0, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2324 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2325 NULL, NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2326 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2327 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2328 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2329 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2330 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2331 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2332 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2333 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2334 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2335 { DO_COPY , DS_SCREEN_RAM , 0x1f40, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2336 { DO_SET_MEM_LO , DS_D020 , 0x2328, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2337 { DO_SET_MEM_LO , DS_BGCOL , 0x2329, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2338 { DO_COPY , DS_COLOR_RAM , 0x2338, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2339 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2340 },
1593
a77876a07425 Oops, missed this from the last commit.
Matti Hamalainen <ccr@tnsp.org>
parents: 1592
diff changeset
2341 },
a77876a07425 Oops, missed this from the last commit.
Matti Hamalainen <ccr@tnsp.org>
parents: 1592
diff changeset
2342 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2343 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2344
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2345 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2346 "ims", "Image System MC (unpacked)", 0x3c00, 10218, 0, DM_FMT_RDWR,
1755
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2347 NULL,
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2348 NULL, NULL,
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2349 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2350 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2351 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2352 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2353 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2354 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2355 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2356 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2357 { DO_COPY , DS_COLOR_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2358 { DO_COPY , DS_BITMAP_RAM , 0x0400, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2359 { DO_SET_MEM_LO , DS_BGCOL , 0x23ff, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2360 { DO_COPY , DS_SCREEN_RAM , 0x2400, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2361 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2362 }
1755
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2363 },
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2364 NULL
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2365 },
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2366
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2367 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2368 "mil", "Micro Illustrator (unpacked)", 0x18dc, 10022, 0, DM_FMT_RDWR | DM_FMT_BROKEN,
1983
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
2369 fmtProbeMicroIllustrator,
1758
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2370 NULL, NULL,
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2371 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2372 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2373 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2374 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2375 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2376 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2377 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2378 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2379 { DO_COPY , DS_SCREEN_RAM , 20 + 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2380 { DO_COPY , DS_COLOR_RAM , 20 + 1000 , 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2381 { DO_COPY , DS_BITMAP_RAM , 20 + 2000 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1985
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
2382 // XXX TODO: Unknown where the background color is set, so default to 0x00
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2383 { DO_SET_OP , DS_BGCOL , 0x00 , 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2384 { DO_SET_MEM_LO , DS_BGCOL , 20 + 0x3e8 , 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2385 { DO_SET_MEM_LO , DS_BGCOL , 20 + 0x3e9 , 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2386 { DO_SET_MEM_LO , DS_BGCOL , 20 + 0x3ea , 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2387 { DO_SET_MEM_LO , DS_BGCOL , 20 + 0x3eb , 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2388 { DO_FUNC , 0 , 0 , 0, 0, 0, NULL, fmtEncodeMicroIllustrator, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2389 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2390 }
1758
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2391 },
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2392 NULL
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2393 },
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2394
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2395 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2396 "cdu", "CDU-Paint (unpacked)", 0x7eef, 10277, 0, DM_FMT_RDWR,
1754
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2397 NULL,
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2398 NULL, NULL,
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2399 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2400 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2401 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2402 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2403 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2404 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2405 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2406 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2407 { DO_COPY , DS_BITMAP_RAM , 0x0000 + 0x111, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2408 { DO_COPY , DS_SCREEN_RAM , 0x1f40 + 0x111, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2409 { DO_COPY , DS_COLOR_RAM , 0x2328 + 0x111, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2410 { DO_SET_MEM_LO , DS_BGCOL , 0x2710 + 0x111, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2411 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2412 }
1754
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2413 },
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2414 NULL
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2415 },
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2416
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2417 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2418 "rbp", "Rainbow Painter (unpacked)", 0x5c00, 10242, 0, DM_FMT_RDWR | DM_FMT_BROKEN,
1763
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2419 NULL,
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2420 NULL, NULL,
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2421 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2422 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2423 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2424 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2425 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2426 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2427 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2428 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2429 { DO_COPY , DS_SCREEN_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2430 { DO_COPY , DS_BITMAP_RAM , 0x0400, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2431 { DO_COPY , DS_COLOR_RAM , 0x2400, 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2432 // XXX TODO: Not sure if the background color is hardcoded ..
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2433 { DO_SET_OP , DS_BGCOL , 0x00 , 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2434 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2435 }
1763
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2436 },
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2437 NULL
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2438 },
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2439
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2440 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2441 "sar", "Saracen Paint (unpacked)", 0x7800, 10219, 0, DM_FMT_RDWR,
1772
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
2442 fmtProbeSaracenPaint,
1769
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2443 NULL, NULL,
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2444 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2445 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2446 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2447 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2448 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2449 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2450 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2451 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2452 { DO_COPY , DS_SCREEN_RAM , 0x7800 - 0x7800, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2453 { DO_SET_MEM_LO , DS_BGCOL , 0x7bf0 - 0x7800, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2454 { DO_COPY , DS_BITMAP_RAM , 0x7c00 - 0x7800, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2455 { DO_COPY , DS_COLOR_RAM , 0x9c00 - 0x7800, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2456 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2457 }
1769
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2458 },
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2459 NULL
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2460 },
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2461
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2462 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2463 "blp", "Blazing Paddles (unpacked)", 0xA000, 10242, 0, DM_FMT_RDWR,
1770
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2464 NULL,
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2465 NULL, NULL,
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2466 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2467 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2468 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2469 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2470 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2471 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2472 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2473 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2474 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
1980
2cf79254b8e4 Confirm the Blazing Paddles d020/bgcolor positions and remove the broken flag.
Matti Hamalainen <ccr@tnsp.org>
parents: 1979
diff changeset
2475 // Both d020 and bgcolor confirmed by tests
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2476 { DO_SET_MEM_LO , DS_D020 , 0x1f7f, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2477 { DO_SET_MEM_LO , DS_BGCOL , 0x1f80, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2478 { DO_COPY , DS_SCREEN_RAM , 0x2000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2479 { DO_COPY , DS_COLOR_RAM , 0x2400, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2480 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2481 }
1770
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2482 },
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2483 NULL
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2484 },
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2485
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2486 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2487 "pmg", "Paint Magic crippled MC (unpacked)", 0x3f8e, 9332, 0, DM_FMT_RDWR,
1762
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2488 NULL,
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2489 NULL, NULL,
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2490 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2491 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2492 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2493 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2494 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2495 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2496 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2497 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2498 { DO_COPY , DS_BITMAP_RAM , 0x4000 + 0x72 - 0x4000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2499 { DO_COPY , DS_SCREEN_RAM , 0x6000 + 0x72 - 0x4000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2500 { DO_SET_MEM_LO , DS_D020 , 0x5f40 + 0x72 - 0x4000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2501 { DO_SET_MEM_LO , DS_COLOR_RAM , 0x5f43 + 0x72 - 0x4000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2502 { DO_SET_MEM_LO , DS_BGCOL , 0x5f44 + 0x72 - 0x4000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2503 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2504 }
1762
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2505 },
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2506 NULL
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2507 },
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2508
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2509 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2510 "a64", "Wigmore Artist 64 (unpacked)", 0x4000, 10242, 0, DM_FMT_RDWR,
1779
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2511 NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2512 NULL, NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2513 {
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2514 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2515 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2516 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2517 2, 1,
1779
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2518 NULL, NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2519 NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2520 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2521 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2522 { DO_COPY , DS_SCREEN_RAM , 0x2000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2523 { DO_COPY , DS_COLOR_RAM , 0x2400, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2524 { DO_SET_MEM_LO , DS_D020 , 0x27fe, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2525 { DO_SET_MEM_LO , DS_BGCOL , 0x27ff, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2526 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1779
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2527 }
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2528 },
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2529 NULL
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2530 },
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2531
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2532 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2533 "ami", "Amica Paint (packed)", 0x4000, 0, 0, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2534 fmtProbeAmicaPaintPacked,
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
2535 fmtDecodeAmicaPaintPacked, fmtEncodeAmicaPaintPacked,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2536 { }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2537 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2538
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2539 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2540 "rpm", "Run Paint (unpacked)", 0x6000, 10006, 0, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2541 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2542 NULL, NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2543 { }, &dmC64CommonFormats[0]
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2544 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2545
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2546 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2547 "ipc", "Interpaint MC (unpacked)", 0x4000, 10003, 0, DM_FMT_RDWR,
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2548 NULL,
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2549 NULL, NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2550 { }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2551 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2552
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2553 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2554 "art", "Art Studio (unpacked)", 0x2000, 9009, 0, DM_FMT_RDWR,
2161
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
2555 fmtProbeArtStudio,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2556 NULL, NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2557 { }, &dmC64CommonFormats[2]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2558 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2559
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2560 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2561 "iph", "Interpaint (unpacked)", 0x4000, 9002, 0, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2562 NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2563 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2564 { }, &dmC64CommonFormats[2]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2565 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2566
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2567 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2568 "dd", "Doodle (unpacked)", 0x1c00, 9218, 0, DM_FMT_RDWR,
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2569 fmtProbeDoodle,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2570 NULL, NULL,
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2571 { }, &dmC64CommonFormats[10]
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2572 },
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2573
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2574 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2575 "jj", "Doodle (packed)", 0x5c00, 0, 0xfe, DM_FMT_RDWR,
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2576 fmtProbeDoodle,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2577 fmtDecodeStaticRLEMarkerMode2, fmtEncodeStaticRLEMarkerMode2,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2578 { }, &dmC64CommonFormats[10]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2579 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2580
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2581 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2582 "mon", "Monomagic (unpacked)", 0x2000, 8194, 0, DM_FMT_RDWR,
1670
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2583 NULL,
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2584 NULL, NULL,
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2585 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2586 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2587 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2588 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2589 1, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2590 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2591 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2592 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2593 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2594 { DO_SET_OP , DS_SCREEN_RAM , 0xCF , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2595 // Default colors used by MM are --^^
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2596 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2597 }
1670
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2598 },
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2599 NULL
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2600 },
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2601
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2602 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2603 "hir", "Plain hires (unpacked)", 0x2000, 8002, 0, DM_FMT_RDWR,
1671
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2604 NULL,
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2605 NULL, NULL,
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2606 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2607 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2608 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2609 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2610 1, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2611 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2612 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2613 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2614 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2615 { DO_SET_OP , DS_SCREEN_RAM , 0xF0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2616 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2617 }
1671
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2618 },
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2619 NULL
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2620 },
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2621
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2622 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2623 "gih", "Gigapaint hires (unpacked)", 0x6000, 8002, 0, DM_FMT_RDWR,
1915
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2624 fmtProbeGigapaintHires,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2625 NULL, NULL,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2626 {
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2627 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2628 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2629 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2630 1, 1,
1915
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2631 NULL, NULL,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2632 NULL,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2633 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2634 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2635 { DO_SET_OP , DS_SCREEN_RAM , 0x0F , 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2636 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1915
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2637 }
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2638 },
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2639 NULL
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2640 },
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2641
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2642 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2643 "bfli", "Pu-239 Big FLI/BFLI (unpacked)", 0x3bff, 33795, 0, DM_FMT_RD,
1582
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2644 NULL,
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2645 NULL, NULL,
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2646 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2647 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2648 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT * 2,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2649 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2650 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2651 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2652 fmtGetPixelBFLI,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2653 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2654 { DO_COPY , DS_COLOR_RAM , 0x0001, 0, 0x400 , 0, NULL, NULL, DF_NORMAL },
2307
319fd953ba29 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
2655 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x0401, 0, 0x400 , 0, DF_NORMAL),
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2656 { DO_COPY , DS_BITMAP_RAM , 0x2401, 0, 0x2000, 0, NULL, NULL, DF_NORMAL },
2307
319fd953ba29 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
2657 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x4401, 8, 0x400 , 0x400, DF_NORMAL),
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2658 { DO_COPY , DS_BITMAP_RAM , 0x6401, 1, 0x2000, 0, NULL, NULL, DF_NORMAL },
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2659 { DO_SET_OP , DS_EXTRA_INFO , D64_FLI_8, 0, 0, D64_EI_FLI_TYPE, NULL, NULL, DF_DECODE },
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2660 { DO_LAST , 0 , 0 , 0, 0 , 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2661 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2662 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2663 NULL
1582
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2664 },
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2665
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2666 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2667 "bml", "Black Mail FLI (unpacked)", 0x3b00, 17474, 0, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2668 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2669 NULL, NULL,
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2670 { }, &dmC64CommonFormats[1]
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2671 },
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2672
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2673 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2674 "bmlp", "Black Mail FLI (packed)", 0x38f0, 0, 0, DM_FMT_RDWR,
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2675 fmtProbeBlackMailFLIPacked,
1832
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
2676 fmtDecodeBlackMailFLIPacked, fmtEncodeBlackMailFLIPacked,
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2677 { }, &dmC64CommonFormats[1]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2678 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2679
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2680 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2681 "dfed", "Dolphins FLI Editor v3.2 (unpacked)", 0x3b00, 17665, 0, DM_FMT_RDWR,
2308
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2682 NULL,
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2683 NULL, NULL,
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2684 { }, &dmC64CommonFormats[1]
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2685 },
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2686
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2687 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2688 "fd1", "FBI Crew FLI Designer 1.1 (unpacked)", 0x3c00, 17409, 0, DM_FMT_RDWR,
1834
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2689 NULL,
1734
183d503b17a7 Implement support for hires FLI interlaced "ECI Graphic Editor 1.0 (unpacked)" format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1731
diff changeset
2690 NULL, NULL,
1834
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2691 { }, &dmC64CommonFormats[9]
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2692 },
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2693
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2694 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2695 "fd2", "FLI Designer 2 (unpacked)", 0x3ff0, 17409, 0, DM_FMT_RDWR,
1834
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2696 NULL,
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2697 NULL, NULL,
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2698 { }, &dmC64CommonFormats[9]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2699 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2700
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2701 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2702 "flnt", "Flinterlazer 1.0 (unpacked)", 0x284e, 38812, 0, DM_FMT_RD | DM_FMT_BROKEN,
2299
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2703 NULL,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2704 NULL, NULL,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2705 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2706 D64_FMT_MC | D64_FMT_FLI | D64_FMT_ILACE,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2707 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2708 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2709 2, 1,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2710 NULL, NULL,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2711 fmtGetPixelFlinterlazer,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2712 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2713 { DO_COPY , DS_COLOR_RAM , 0x0000 , 0, 0 , 0, NULL, NULL, DF_NORMAL },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2714 { DO_COPY , DS_COLOR_RAM , 0x0000 , 1, 0 , 0, NULL, NULL, DF_NORMAL },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2715
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2716 { DO_COPY , DS_BITMAP_RAM , 0x4000 - 0x284e, 0, 0 , 0, NULL, NULL, DF_NORMAL },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2717 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x6000 - 0x284e, 0, 0x400, 0, DF_NORMAL),
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2718
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2719 { DO_COPY , DS_BITMAP_RAM , 0x8000 - 0x284e, 1, 0 , 0, NULL, NULL, DF_NORMAL },
2300
a494e4a4b6bc Minor improvements to Flinterlazer support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2299
diff changeset
2720 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0xA000 - 0x284e, 8, 0x400, 0, DF_NORMAL),
2299
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2721
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2722 { DO_SET_OP , DS_EXTRA_INFO , D64_ILACE_COLOR, 0 , 0 , D64_EI_ILACE_TYPE, NULL, NULL, DF_DECODE },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2723 { DO_SET_OP , DS_EXTRA_INFO , D64_FLI_8 , 0, 0 , D64_EI_FLI_TYPE, NULL, NULL, DF_DECODE },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2724 { DO_FUNC , 0 , 0 , 0, 0, 0, fmtDecodeFlinterlazer, NULL, DF_NORMAL },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2725 { DO_LAST , 0 , 0 , 0, 0 , 0, NULL, NULL, DF_NORMAL },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2726 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2727 },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2728 NULL
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2729 },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2730
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2731 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2732 "eci", "ECI Graphic Editor 1.0 (unpacked)", 0x4000, 32770, 0, DM_FMT_RDWR,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2733 NULL,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2734 NULL, NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2735 { }, &dmC64CommonFormats[7]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2736 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2737
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2738 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2739 "ecip", "ECI Graphic Editor 1.0 (packed)", 0x4000, 0, 0, DM_FMT_RDWR,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2740 fmtProbeECIPacked,
1912
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2741 fmtDecodeECIPacked, fmtEncodeECIPacked,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2742 { }, &dmC64CommonFormats[7]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2743 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2744
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2745 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2746 "fpt", "Face Painter (unpacked)", 0x4000, 10004, 0, DM_FMT_RDWR,
1979
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2747 NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2748 NULL, NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2749 { // Almost same layout as Koala Painter, but FPT has D020
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2750 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2751 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2752 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2753 2, 1,
1979
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2754 NULL, NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2755 NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2756 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2757 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2758 { DO_COPY , DS_SCREEN_RAM , 0x1f40, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2759 { DO_COPY , DS_COLOR_RAM , 0x2328, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2760 { DO_SET_MEM_LO , DS_BGCOL , 0x2710, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2761 { DO_SET_MEM_LO , DS_D020 , 0x2711, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2762 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1979
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2763 }
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2764 },
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2765 NULL
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2766 },
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2767
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2768 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2769 "xx1", "Unknown $2000 format (unpacked)", 0x2000, 10242, 0, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2770 NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2771 NULL, NULL,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2772 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2773 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2774 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2775 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2776 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2777 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2778 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2779 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2780 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2781 { DO_COPY , DS_SCREEN_RAM , 0x2000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2782 { DO_COPY , DS_COLOR_RAM , 0x2400, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2783 { DO_SET_OP , DS_BGCOL , 0x00 , 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2784 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2785 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2786 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2787 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2788 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2789
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2790 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2791 "xx2", "Unknown $2000 format (unpacked)", 0x2000, 0, 0, DM_FMT_RDWR,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2792 fmtProbeFormatXX2,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2793 fmtDecodeFormatXX2, NULL,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2794 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2795 D64_FMT_MC,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2796 XX2_WIDTH_CH * 4, XX2_HEIGHT_CH * 8,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2797 XX2_WIDTH_CH , XX2_HEIGHT_CH,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2798 2, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2799 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2800 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2801 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2802 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, XX2_BSIZE, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2803 { DO_COPY , DS_SCREEN_RAM , XX2_BSIZE, 0, XX2_SIZE, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2804 { DO_COPY , DS_COLOR_RAM , XX2_BSIZE + XX2_SIZE, 0, XX2_SIZE, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2805 { DO_SET_OP , DS_BGCOL , 11 , 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2806 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2807 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2808 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2809 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2810 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2811
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2812 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2813 "fp2", "FunPaint II (unpacked)", 0x3ff0, 33694, 0, DM_FMT_RDWR,
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2814 fmtProbeFunPaint2,
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2815 fmtDecodeFunPaint2, fmtEncodeFunPaint2Unpacked,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2816 { }, &dmC64CommonFormats[3]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2817 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2818
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2819 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2820 "fp2p", "FunPaint II (packed)", 0x3ff0, 0, 0, DM_FMT_RDWR,
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2821 fmtProbeFunPaint2,
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2822 fmtDecodeFunPaint2, fmtEncodeFunPaint2Packed,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2823 { }, &dmC64CommonFormats[3]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2824 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2825
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2826 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2827 "gun", "GunPaint 1.1 (unpacked)", 0x4000, 33603, 0, DM_FMT_RDWR,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2828 fmtProbeGunPaint,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2829 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2830 {
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2831 D64_FMT_MC | D64_FMT_FLI | D64_FMT_ILACE,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2832 D64_SCR_WIDTH, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2833 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2834 1, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2835 NULL, NULL,
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2836 fmtGetPixelFunPaint2, // The format is essentially same as FP2
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2837 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2838 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x0000, 0, 0x400, 0, DF_NORMAL),
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2839 { DO_COPY , DS_BITMAP_RAM , 0x2000, 0, 0 , 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2840 { DO_COPY , DS_EXTRA_DATA , 0x3f4f, 0, 177, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2841 { DO_COPY , DS_COLOR_RAM , 0x4000, 0, 0 , 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2842 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x4400, 8, 0x400, 0, DF_NORMAL),
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2843 { DO_COPY , DS_BITMAP_RAM , 0x6400, 1, 0 , 0, NULL, NULL, DF_NORMAL },
1847
e3d1f16be4ee Using the newly introduced data block offset feature, unify the handling of
Matti Hamalainen <ccr@tnsp.org>
parents: 1846
diff changeset
2844 // GunPaint does not store the last 3 d021 values .. so set them to black
e3d1f16be4ee Using the newly introduced data block offset feature, unify the handling of
Matti Hamalainen <ccr@tnsp.org>
parents: 1846
diff changeset
2845 // XXX TODO: According to some, the last 4 should be same ..
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2846 { DO_SET_MEM , DS_EXTRA_DATA , 0 , 0, 3 , 20+177, NULL, NULL, DF_NORMAL },
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2847 { DO_SET_OP , DS_EXTRA_INFO , D64_ILACE_RES , 0, 0 , D64_EI_ILACE_TYPE, NULL, NULL, DF_DECODE },
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2848 { DO_SET_OP , DS_EXTRA_INFO , D64_FLI_8 , 0, 0 , D64_EI_FLI_TYPE, NULL, NULL, DF_DECODE },
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2849 { DO_FUNC , 0 , 0 , 0, 0 , 0, NULL, fmtEncodeGunPaint, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2850 { DO_LAST , 0 , 0 , 0, 0 , 0, NULL, NULL, DF_NORMAL },
1805
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2851 }
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2852 },
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2853 NULL
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2854 },
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2855
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2856 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2857 "hcb", "Half Char Bitmap (unpacked)", 0x5000, 12148, 0, DM_FMT_RDWR,
1876
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2858 NULL,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2859 NULL, NULL,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2860 {
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2861 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2862 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2863 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2864 2, 1,
1876
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2865 NULL, NULL,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2866 fmtGetPixelHCB,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2867 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2868 { DO_COPY , DS_COLOR_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2869 { DO_COPY , DS_COLOR_RAM , 0x0400, 1, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2870 { DO_COPY , DS_SCREEN_RAM , 0x0800, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2871 { DO_COPY , DS_SCREEN_RAM , 0x0c00, 1, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2872 { DO_COPY , DS_BITMAP_RAM , 0x1000, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2873 { DO_COPY , DS_EXTRA_DATA , 0x2f40, 0, D64_SCR_HEIGHT / 4, 0, NULL, NULL, DF_NORMAL },
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2874 { DO_SET_OP , DS_EXTRA_INFO , D64_FLI_8 , 0, 0 , D64_EI_FLI_TYPE, NULL, NULL, DF_DECODE },
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2875 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1876
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2876 }
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2877 },
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2878 NULL
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2879 },
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2880
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2881 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2882 "pen", "Pentel Paint (unpacked)", 0x4800, 19845, 0, DM_FMT_RD | DM_FMT_BROKEN,
1805
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2883 NULL,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2884 NULL, NULL,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2885 {
2314
87533af8db64 Add format flag for formats that use sprite layer.
Matti Hamalainen <ccr@tnsp.org>
parents: 2313
diff changeset
2886 D64_FMT_HIRES | D64_FMT_FLI | D64_FMT_SPRITES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2887 192, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2888 24, D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2889 2, 1,
1805
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2890 NULL, NULL,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2891 fmtGetPixelPentelPaint,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2892 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2893 { DO_COPY , DS_BITMAP_RAM , 0x0000 , 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2894 { DO_SET_OP , DS_SCREEN_RAM , 0x10 , 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2895 { DO_SET_MEM_LO , DS_BGCOL , 0x9580 - 0x4800, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2896 { DO_SET_MEM_LO , DS_D022 , 0x9581 - 0x4800, 0, 0, 0, NULL, NULL, DF_NORMAL }, // Sprite color
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2897 { DO_SET_MEM_LO , DS_COLOR_RAM , 0x9582 - 0x4800, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2898 { DO_COPY , DS_EXTRA_DATA , 0x5ac0 - 0x4800, 0, D64_SPR_SIZE * 235, 0, NULL, NULL, DF_NORMAL }, // Sprite data
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2899 { DO_SET_OP , DS_EXTRA_INFO , D64_FLI_8 , 0, 0 , D64_EI_FLI_TYPE, NULL, NULL, DF_DECODE },
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2900 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2901 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2902 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2903 NULL
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2904 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2905
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2906 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2907 "chfd", "Crest Hires FLI Designer (unpacked)", 0x4000, 16386, 0, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2908 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2909 NULL, NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2910 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2911 D64_FMT_HIRES | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2912 D64_SCR_WIDTH, D64_SCR_HEIGHT, // Actually 296 x 112 (=14*8)
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2913 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2914 1, 1,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2915 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2916 fmtGetPixelCrestHIFLIorCDHM,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2917 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2918 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0 , 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2919 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x2000, 0, 0x400, 0, DF_NORMAL),
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2920 { DO_SET_OP , DS_EXTRA_INFO , D64_FLI_8 , 0, 0 , D64_EI_FLI_TYPE, NULL, NULL, DF_DECODE },
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2921 { DO_LAST , 0 , 0 , 0, 0 , 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2922 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2923 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2924 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2925 },
1803
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
2926
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
2927 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2928 "cshf", "Crest Super Hires FLI Editor v1.0 (unpacked)", 0x4000, 15874, 0, DM_FMT_RDWR,
2167
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
2929 fmtProbeCrestSHFLI,
2165
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
2930 NULL, NULL,
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2931 { }, &dmC64CommonFormats[11]
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2932 },
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2933
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2934 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2935 "cshfp", "Crest Super Hires FLI Editor v1.0 (packed)", 0xa000, 0, 0, DM_FMT_RD,
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2936 fmtProbeCrestSHFLI,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2937 fmtDecodeCrestSHFLIPacked, NULL,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2938 { }, &dmC64CommonFormats[11]
2165
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
2939 },
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
2940
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
2941 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2942 "cdhm", "Cosmos Designs Hires Manager (unpacked)", 0x4000, 16385, 0, DM_FMT_RDWR,
1803
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
2943 fmtProbeCosmosDesignsHiresManager,
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
2944 NULL, NULL,
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
2945 { }, &dmC64CommonFormats[8]
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
2946 },
2138
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
2947
2130
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2948 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2949 "cdhp", "Cosmos Designs Hires Manager (packed)", 0x4000, 0, 0, DM_FMT_RD,
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
2950 fmtProbeCosmosDesignsHiresManager,
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
2951 fmtDecodeCosmosDesignsHiresManagerPacked, NULL,
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
2952 { }, &dmC64CommonFormats[8]
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
2953 },
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
2954
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
2955 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2956 "mrqp", "Marq's PETSCII editor (new format) (unpacked)", 0x0801, 0, 0, DM_FMT_RDWR,
2130
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2957 fmtProbeMarqPETSCII,
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2958 NULL, NULL,
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2959 {
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2960 D64_FMT_HIRES | D64_FMT_CHAR,
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2961 D64_SCR_WIDTH , D64_SCR_HEIGHT,
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2962 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2963 1, 1,
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2964 NULL, NULL,
2172
de88333acc44 Move the PETSCII getpixel function to lib64gfx.c and remove the
Matti Hamalainen <ccr@tnsp.org>
parents: 2170
diff changeset
2965 NULL,
2130
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2966 {
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
2967 // For offset values see petscii/m_c64.pde :: save_prg()
2368
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
2968 { DO_FUNC , 0 , 20 - 2, 0, 0, 0, NULL, fmtEncodeMarqPETSCIIData, DF_NORMAL },
2287
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
2969 { DO_COPY , DS_SCREEN_RAM , 0x60 , 0, 0, 0, NULL, NULL, DF_NORMAL },
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
2970 { DO_COPY , DS_COLOR_RAM , 0x60 + 1000,0,0, 0, NULL, NULL, DF_NORMAL },
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2971 { DO_SET_MEM_LO , DS_D020 , 25 - 2, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2972 { DO_SET_MEM_LO , DS_BGCOL , 30 - 2, 0, 0, 0, NULL, NULL, DF_NORMAL },
2368
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
2973 { DO_FUNC , 0 , 20 - 2, 0, 0, 0, fmtDecodeHiresPETSCIICharsetData, NULL, DF_NORMAL },
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2974
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2975 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
2130
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2976 }
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2977 },
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2978 NULL
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2979 },
2135
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
2980
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
2981 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2982 "mqpo", "Marq's PETSCII editor (old format) (unpacked)", 0x0801, 2499, 0, DM_FMT_RD,
2173
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2983 NULL,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2984 NULL, NULL,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2985 {
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2986 D64_FMT_HIRES | D64_FMT_CHAR,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2987 D64_SCR_WIDTH , D64_SCR_HEIGHT,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2988 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2989 1, 1,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2990 NULL, NULL,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2991 NULL,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2992 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2993 { DO_COPY , DS_SCREEN_RAM , 0x01ab, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2994 { DO_COPY , DS_COLOR_RAM , 0x01ab + 1000, 0, 0, 0, NULL, NULL, DF_NORMAL },
2173
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2995
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2996 { DO_SET_MEM_LO , DS_D020 , 0x01a9, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2997 { DO_SET_MEM_LO , DS_BGCOL , 0x01aa, 0, 0, 0, NULL, NULL, DF_NORMAL },
2377
d8889ff223b6 UPETSCII is actually old version of Marq's PETSCII editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 2371
diff changeset
2998 { DO_FUNC , 0 , 0 , 0, 0, 0, fmtDecodeMarqOldData, NULL, DF_NORMAL },
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2999
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3000 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
2173
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3001 }
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3002 },
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3003 NULL
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3004 },
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3005
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3006 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3007 "pkhu", "petscii.krissz.hu editor (unpacked)", 0x0801, 0, 0, DM_FMT_RD,
2135
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3008 fmtProbePetsciiKrisszHu,
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3009 NULL, NULL,
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3010 {
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
3011 D64_FMT_CHAR,
2135
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3012 D64_SCR_WIDTH , D64_SCR_HEIGHT,
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3013 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3014 1, 1,
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3015 NULL, NULL,
2172
de88333acc44 Move the PETSCII getpixel function to lib64gfx.c and remove the
Matti Hamalainen <ccr@tnsp.org>
parents: 2170
diff changeset
3016 NULL,
2135
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3017 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3018 { DO_COPY , DS_SCREEN_RAM , 0x2001 - 2, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3019 { DO_COPY , DS_COLOR_RAM , 0x23e9 - 2, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3020
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3021 { DO_COPY , DS_EXTRA_DATA , 0x0000 , 0, 0x0100, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3022 { DO_COPY , DS_CHAR_DATA , 0x1801 - 2, 0, 0x0800, 0, NULL, NULL, DF_NORMAL },
2366
1e6e018b6487 Rename some functions to be more consistent with their intent.
Matti Hamalainen <ccr@tnsp.org>
parents: 2363
diff changeset
3023 { DO_FUNC , 0 , 0 , 0, 0 , 0, fmtDecodePetsciiKrisszHuData, NULL, DF_NORMAL },
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3024
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3025 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
2135
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3026 }
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3027 },
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3028 NULL
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3029 },
2362
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3030
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3031 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3032 "poca", "Petscii Coca editor (unpacked)", 0x0801, 0, 0, DM_FMT_RDWR,
2367
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
3033 fmtProbeCocaPETSCII,
2362
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3034 NULL, NULL,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3035 {
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3036 D64_FMT_HIRES | D64_FMT_CHAR,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3037 D64_SCR_WIDTH , D64_SCR_HEIGHT,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3038 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3039 1, 1,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3040 NULL, NULL,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3041 NULL,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3042 {
2368
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
3043 { DO_FUNC , 0 , 0x0c44 - 0x0801, 0, 0, 0, NULL, fmtEncodeCocaPETSCIIData, DF_NORMAL },
2362
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3044 { DO_COPY , DS_SCREEN_RAM , 0x085a - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL },
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3045 { DO_COPY , DS_COLOR_RAM , 0x0c5a - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL },
2367
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
3046
2362
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3047 { DO_SET_MEM_LO , DS_D020 , 0x0c42 - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL },
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3048 { DO_SET_MEM_LO , DS_BGCOL , 0x0c43 - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL },
2368
4cd67faadbd3 Fix encoding and improve decoding of character set case (upper/lower) for two PETSCII formats. Also generalize the functions a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2367
diff changeset
3049 { DO_FUNC , 0 , 0x0c44 - 0x0801, 0, 0, 0, fmtDecodeHiresPETSCIICharsetData, NULL, DF_NORMAL },
2362
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3050
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3051 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3052 }
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3053 },
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3054 NULL
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3055 },
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3056
2399
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3057 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3058 "acpe", "Abyss Connection PETSCII-Editor 4.61 (unpacked)", 0x3000, 2026, 0, DM_FMT_RDWR,
2399
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3059 NULL,
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3060 NULL, NULL,
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3061 {
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3062 D64_FMT_HIRES | D64_FMT_CHAR,
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3063 D64_SCR_WIDTH , D64_SCR_HEIGHT,
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3064 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3065 1, 1,
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3066 NULL, NULL,
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3067 NULL,
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3068 {
2428
09082816665d Fix write support of Abyss Connection PETSCII-Editor 4.61 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2399
diff changeset
3069 { DO_FUNC , 0 , 0x33ea - 0x3000, 0, 0, 0, NULL, fmtEncodeHiresPETSCIICharsetData, DF_NORMAL },
2399
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3070 { DO_COPY , DS_SCREEN_RAM , 0x0000 , 0, 0, 0, NULL, NULL, DF_NORMAL },
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3071 { DO_COPY , DS_COLOR_RAM , 0x0400 , 0, 0, 0, NULL, NULL, DF_NORMAL },
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3072
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3073 { DO_SET_MEM_LO , DS_D020 , 0x33e8 - 0x3000, 0, 0, 0, NULL, NULL, DF_NORMAL },
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3074 { DO_SET_MEM_LO , DS_BGCOL , 0x33e9 - 0x3000, 0, 0, 0, NULL, NULL, DF_NORMAL },
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3075 { DO_FUNC , 0 , 0x33ea - 0x3000, 0, 0, 0, fmtDecodeHiresPETSCIICharsetData, NULL, DF_NORMAL },
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3076
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3077 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3078 }
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3079 },
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3080 NULL
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3081 },
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3082
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3083 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3084 "suphi1", "SupeRes hires [clear] (packed)", -1, 0, 0x23, DM_FMT_RD,
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3085 fmtProbeSupeRes,
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3086 fmtDecodeSupeRes, NULL,
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3087 { }, &dmC64CommonFormats[10]
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3088 },
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3089
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3090 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3091 "suphi2", "SupeRes hires [no-clear] (packed)", -1, 0, 0x25, DM_FMT_RD,
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3092 fmtProbeSupeRes,
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3093 fmtDecodeSupeRes, NULL,
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3094 { }, &dmC64CommonFormats[10]
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3095 },
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3096
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3097 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3098 "supmc1", "SupeRes multicolor [clear] (packed)", -1, 0, 0x24, DM_FMT_RD,
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3099 fmtProbeSupeRes,
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3100 fmtDecodeSupeRes, NULL,
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3101 { }, &dmC64CommonFormats[0]
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3102 },
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3103
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3104 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3105 "supmc2", "SupeRes multicolor [no-clear] (packed)", -1, 0, 0x26, DM_FMT_RD,
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3106 fmtProbeSupeRes,
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3107 fmtDecodeSupeRes, NULL,
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3108 { }, &dmC64CommonFormats[0]
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3109 },
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3110 };
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3111
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3112 const int ndmC64ImageFormats = sizeof(dmC64ImageFormats) / sizeof(dmC64ImageFormats[0]);
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3113