annotate tools/lib64fmts.c @ 2573:21d296803fac

Use { 0 } initializer instead of {}.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 10 Mar 2022 22:37:05 +0200
parents 1559011d749f
children 317d2f4b322c
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
2539
c6ee41fd98dd Bump copyright years.
Matti Hamalainen <ccr@tnsp.org>
parents: 2537
diff changeset
5 * (C) Copyright 2012-2021 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;
2524
5a7e2aa8fef5 Rename DMSupeResCtx to DMSupeResDecCtx.
Matti Hamalainen <ccr@tnsp.org>
parents: 2523
diff changeset
94 } DMSupeResDecCtx;
5a7e2aa8fef5 Rename DMSupeResCtx to DMSupeResDecCtx.
Matti Hamalainen <ccr@tnsp.org>
parents: 2523
diff changeset
95
5a7e2aa8fef5 Rename DMSupeResCtx to DMSupeResDecCtx.
Matti Hamalainen <ccr@tnsp.org>
parents: 2523
diff changeset
96
5a7e2aa8fef5 Rename DMSupeResCtx to DMSupeResDecCtx.
Matti Hamalainen <ccr@tnsp.org>
parents: 2523
diff changeset
97 static int fmtSupeResGetByte(DMSupeResDecCtx *ctx, Uint8 *data, const int mode)
2519
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 return DMERR_OK;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
107 }
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
2524
5a7e2aa8fef5 Rename DMSupeResCtx to DMSupeResDecCtx.
Matti Hamalainen <ccr@tnsp.org>
parents: 2523
diff changeset
110 static int fmtDecodeSupeRes24_25(DMSupeResDecCtx *ctx, Uint8 tmp)
2522
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
111 {
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
112 if (tmp == 0x24)
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
113 {
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
114 ctx->dbyte = 0xff;
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
115 }
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
116 else
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
117 {
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
118 if (tmp == 0x25)
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
119 {
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
120 int res;
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
121 if ((res = fmtSupeResGetByte(ctx, &tmp, 9)) != DMERR_OK)
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
122 return res;
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
123
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
124 tmp = (0x26 + tmp) & 0xff;
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
125 }
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
126
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
127 ctx->dbyte = tmp - 0x26;
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
128 }
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
129
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
130 return DMERR_OK;
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
131 }
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
132
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
133
2524
5a7e2aa8fef5 Rename DMSupeResCtx to DMSupeResDecCtx.
Matti Hamalainen <ccr@tnsp.org>
parents: 2523
diff changeset
134 static int fmtDecodeSupeResByte(DMSupeResDecCtx *ctx)
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
135 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
136 Uint8 tmp;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
137 int res;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
138
2535
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
139 do
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
140 {
2535
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
141 if ((res = fmtSupeResGetByte(ctx, &tmp, 1)) != DMERR_OK)
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
142 break;
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
143
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
144 if (tmp == 0x21)
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
145 {
2535
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
146 // ????
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
147 ctx->offs = 0xffff;
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
148 break;
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
149 }
2535
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
150 else
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
151 if (tmp == 0x20)
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
152 {
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
153 if ((res = fmtSupeResGetByte(ctx, &tmp, 2)) != DMERR_OK)
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
154 break;
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
155
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
156 ctx->repcount = tmp - 0x26;
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
157
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
158 if ((res = fmtSupeResGetByte(ctx, &tmp, 3)) != DMERR_OK ||
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
159 (res = fmtDecodeSupeRes24_25(ctx, tmp)) != DMERR_OK)
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
160 break;
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
161
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
162 for (int cnt = 0; cnt < ctx->repcount; cnt++)
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
163 {
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
164 ctx->dstBuf[ctx->offs++] = ctx->dbyte;
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
165 if (ctx->offs >= ctx->end_offs)
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
166 break;
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
167 }
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
168
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
169 if (ctx->offs >= ctx->end_offs)
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
170 {
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
171 ctx->offs--;
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
172 break;
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
173 }
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
174 }
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
175 else
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
176 {
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
177 res = fmtDecodeSupeRes24_25(ctx, tmp);
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
178 break;
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
179 }
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
180 } while (1);
5f76cf36e5c5 Clean up SupeRES decoder loop a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2526
diff changeset
181
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
182 return res;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
183 }
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
2524
5a7e2aa8fef5 Rename DMSupeResCtx to DMSupeResDecCtx.
Matti Hamalainen <ccr@tnsp.org>
parents: 2523
diff changeset
186 static int fmtDecodeSupeResSection(DMSupeResDecCtx *ctx, const size_t offs, const size_t size)
2519
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 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
189
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
190 ctx->offs = offs;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
191 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
192
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
193 do
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
194 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
195 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
196 goto out;
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 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
199 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
200
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
201 } 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
202
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
203 out:
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
204 return res;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
205 }
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
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
208 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
209 {
2524
5a7e2aa8fef5 Rename DMSupeResCtx to DMSupeResDecCtx.
Matti Hamalainen <ccr@tnsp.org>
parents: 2523
diff changeset
210 DMSupeResDecCtx ctx;
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
211 DMGrowBuf tmp;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
212 int res;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
213
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
214 memset(&ctx, 0, sizeof(ctx));
2522
27271f2afa7c Clean up the SupeRes decoder a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2521
diff changeset
215 ctx.dstSize = 0x3000;
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
216
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
217 // 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
218 // 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
219 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
220
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
221 // Allocate output buffer
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
222 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
223 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
224 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
225 "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
226 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
227
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
228 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
229 {
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
230 case 0x23:
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
231 case 0x25:
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
232 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
233 (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
234 goto out;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
235 break;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
236
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
237 case 0x24:
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
238 case 0x26:
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
239 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
240 goto out;
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 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
243
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, 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
245 (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
246 (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
247 goto out;
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 break;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
250 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
251
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
252 res = dmC64DecodeGenericBMP(img,
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
253 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
254
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
255 out:
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
256 dmFree(ctx.dstBuf);
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
257 return res;
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
258 }
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
259
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
260
2525
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
261 typedef struct
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
262 {
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
263 DMGrowBuf *buf;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
264
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
265 int cnt1, cnt2, dbyte;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
266 } DMSupeResEncCtx;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
267
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
268
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
269 static BOOL fmtEncodeSupeResRun(DMSupeResEncCtx *ctx)
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
270 {
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
271 if (ctx->cnt2 == 255)
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
272 ctx->cnt2 = 0x24;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
273 else
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
274 if (ctx->cnt2 > 216)
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
275 {
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
276 if (!dmGrowBufPutU8(ctx->buf, 0x25))
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
277 return FALSE;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
278 }
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
279 else
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
280 ctx->cnt2 += 0x26;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
281
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
282 if (!dmGrowBufPutU8(ctx->buf, ctx->cnt2))
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
283 return FALSE;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
284
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
285 ctx->cnt1 = ctx->cnt2 = 0;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
286
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
287 return TRUE;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
288 }
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
289
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
290
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
291 static BOOL fmtEncodeSupeResFlush(DMSupeResEncCtx *ctx)
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
292 {
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
293 ctx->cnt1 += 0x26;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
294
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
295 if (!dmGrowBufPutU8(ctx->buf, 0x20) ||
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
296 !dmGrowBufPutU8(ctx->buf, ctx->cnt1))
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
297 return FALSE;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
298
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
299 return fmtEncodeSupeResRun(ctx);
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
300 }
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
301
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
302
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
303 static BOOL fmtEncodeSupeResSection(DMSupeResEncCtx *ctx, const DMC64MemBlock *blk)
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
304 {
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
305 for (size_t offs = 0; offs < blk->size; offs++)
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
306 {
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
307 ctx->dbyte = blk->data[offs];
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
308
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
309 if ((ctx->cnt1 == 0 && offs + 1 < blk->size && ctx->dbyte == blk->data[offs + 1]) ||
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
310 (ctx->cnt1 != 0 && ctx->dbyte == ctx->cnt2))
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
311 {
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
312 ctx->cnt1++;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
313 ctx->cnt2 = ctx->dbyte;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
314
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
315 if (ctx->cnt1 >= 215 &&
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
316 !fmtEncodeSupeResFlush(ctx))
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
317 return FALSE;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
318
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
319 continue;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
320 }
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
321 else
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
322 if (ctx->cnt1 != 0 && ctx->dbyte != ctx->cnt2)
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
323 {
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
324 if (!fmtEncodeSupeResFlush(ctx))
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
325 return FALSE;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
326 }
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
327
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
328 ctx->cnt2 = ctx->dbyte;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
329
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
330 if (!fmtEncodeSupeResRun(ctx))
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
331 return FALSE;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
332 }
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
333
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
334 if (ctx->cnt1 > 0)
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
335 return fmtEncodeSupeResFlush(ctx);
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
336
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
337 return TRUE;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
338 }
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
339
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
340
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
341 static int fmtEncodeSupeRes(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt)
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
342 {
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
343 DMSupeResEncCtx ctx;
2526
4deb8da6c901 Initialize result variable.
Matti Hamalainen <ccr@tnsp.org>
parents: 2525
diff changeset
344 BOOL bres = FALSE;
2525
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
345
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
346 // Output magic header and data type
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
347 if (!dmGrowBufPut(buf, fmtSupeRes_MagicID_1, sizeof(fmtSupeRes_MagicID_1)) ||
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
348 !dmGrowBufPutU8(buf, fmt->extra))
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
349 {
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
350 return dmError(DMERR_MALLOC,
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
351 "Error outputting SupeRes magic header.\n");
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
352 }
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
353
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
354 memset(&ctx, 0, sizeof(ctx));
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
355 ctx.buf = buf;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
356
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
357 switch (fmt->extra)
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
358 {
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
359 case 0x23:
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
360 case 0x25:
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
361 bres =
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
362 fmtEncodeSupeResSection(&ctx, &img->screen[0]) &&
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
363 fmtEncodeSupeResSection(&ctx, &img->bitmap[0]);
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
364 break;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
365
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
366 case 0x24:
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
367 case 0x26:
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
368 ctx.cnt2 = img->bgcolor;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
369 bres =
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
370 fmtEncodeSupeResRun(&ctx) &&
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
371 fmtEncodeSupeResSection(&ctx, &img->screen[0]) &&
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
372 fmtEncodeSupeResSection(&ctx, &img->color[0]) &&
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
373 fmtEncodeSupeResSection(&ctx, &img->bitmap[0]);
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
374 break;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
375 }
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
376
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
377 return bres ? DMERR_OK : DMERR_MALLOC;
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
378 }
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
379
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
380
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
381 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
382 {
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
383 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
384 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
385 };
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
386
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
387 static const Uint8 fmtMarqPETSCII_ID2[] =
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
388 {
2287
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
389 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
390 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
391 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
392 };
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
393
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
394 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
395 {
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
396 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
397 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
398 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
399 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
400 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
401 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
402 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
403 };
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
404
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
405
2130
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
406 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
407 {
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
408 (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
409
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
410 if (buf->len == 2098 &&
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
411 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
412 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
413 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
414 )
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
415 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
416
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
417 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
418 }
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
419
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
420
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
421 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
422 const DMGrowBuf *buf, const DMC64ImageCommonFormat *fmt)
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
423 {
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
424 (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
425 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
426
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
427 switch (buf->data[op->offs])
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
428 {
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
429 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
430 case 0x17: val = 1; break; // lower case
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
431 default:
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
432 return DMERR_INVALID_DATA;
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
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
435 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
436 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
437 img->extraInfo[D64_EI_CHAR_CUSTOM] = 0;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
438
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
439 return DMERR_OK;
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
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
442
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
443 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
444 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
445 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
446 {
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
447 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
448 (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
449
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
450 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
451 {
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
452 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
453 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
454 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
455 }
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
456
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
457 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
458
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
459 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
460 }
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
461
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
462
2366
1e6e018b6487 Rename some functions to be more consistent with their intent.
Matti Hamalainen <ccr@tnsp.org>
parents: 2363
diff changeset
463 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
464 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
465 {
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
466 memcpy(buf->data,
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
467 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
468
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
469 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
470 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
471
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
472 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
473 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
474
2428
09082816665d Fix write support of Abyss Connection PETSCII-Editor 4.61 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2399
diff changeset
475 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
476 }
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
477
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
478
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
479 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
480 {
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
481 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
482 0x31, 0x00, 0x00, 0x00, 0xA9,
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
483 };
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
484
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
485 static const Uint8 fmtPetsciiKrisszHu_ID2[] =
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
486 {
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
487 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
488 };
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
489
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
490
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
491 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
492 {
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
493 (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
494
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
495 if (buf->len == 10193 &&
2138
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
496 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
497 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
498 )
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
499 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
500
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
501 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
502 }
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
503
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
504
2366
1e6e018b6487 Rename some functions to be more consistent with their intent.
Matti Hamalainen <ccr@tnsp.org>
parents: 2363
diff changeset
505 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
506 const DMGrowBuf *buf, const DMC64ImageCommonFormat *fmt)
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
507 {
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
508 (void) op;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
509 (void) buf;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
510 (void) fmt;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
511
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
512 const Uint8 *data = img->extraData[0].data;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
513 switch (data[0x0028 - 2])
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
514 {
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
515 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
516 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
517 img->d020 = data[0x001e - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
518 img->bgcolor = data[0x0023 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
519 break;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
520
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
521 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
522 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
523 img->d020 = data[0x001e - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
524 img->bgcolor = data[0x0023 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
525 img->d022 = data[0x002d - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
526 img->d023 = data[0x0032 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
527 break;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
528
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
529 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
530 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
531 img->d020 = data[0x001e - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
532 img->bgcolor = data[0x0023 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
533 img->d022 = data[0x0028 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
534 img->d023 = data[0x002d - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
535 img->d024 = data[0x0032 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
536 break;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
537
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
538 default:
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
539 return DMERR_INVALID_DATA;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
540 }
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
541
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
542 // 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
543 // 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
544 // 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
545 // implement a hash-based detection at some point.
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
546 img->extraInfo[D64_EI_CHAR_CASE] = 0;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
547 img->extraInfo[D64_EI_CHAR_CUSTOM] = 1;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
548
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
549 return DMERR_OK;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
550 }
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
551
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
552
2377
d8889ff223b6 UPETSCII is actually old version of Marq's PETSCII editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 2371
diff changeset
553 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
554 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
555 {
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
556 (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
557 (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
558 (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
559
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
560 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
561 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
562
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
563 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
564 }
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
565
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
566
2367
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
567 static const Uint8 fmtCocaPETSCII_ID1[] =
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
568 {
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
569 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
570 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
571 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
572 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
573 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
574 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
575 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
576 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
577 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
578 };
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
579
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
580
2367
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
581 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
582 {
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
583 (void) fmt;
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
584
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
585 if (buf->len == 2115 &&
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
586 DM_MEMCMP_SIZE(buf->data, fmtCocaPETSCII_ID1) == 0 &&
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
587 buf->data[0x0c44 - 0x0801 + 2] == 0x14)
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
588 return DM_PROBE_SCORE_MAX;
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
589
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
590 return DM_PROBE_SCORE_FALSE;
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
591 }
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
592
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
593
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
594 static int fmtEncodeCocaPETSCIIData(const DMC64EncDecOp *op, DMGrowBuf *buf,
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
595 const DMC64Image *img, const DMC64ImageCommonFormat *fmt)
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
596 {
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
597 memcpy(buf->data,
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
598 fmtCocaPETSCII_ID1, sizeof(fmtCocaPETSCII_ID1));
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
599
2428
09082816665d Fix write support of Abyss Connection PETSCII-Editor 4.61 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2399
diff changeset
600 return fmtEncodeHiresPETSCIICharsetData(op, buf, img, fmt);
2367
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
601 }
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
602
36226425aac1 Fix Petscii Coca editor format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2366
diff changeset
603
2015
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
604 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
605 {
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
606 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
607
2112
9dc2976e9fa3 Improve probing of packed and unpacked Koala files. Many converters and
Matti Hamalainen <ccr@tnsp.org>
parents: 2080
diff changeset
608 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
609 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
610 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
611
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
612 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
613 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
614
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
615 return score;
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
616 }
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
617
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
618
1815
2b68b6955635 Rename "Koala Paint" to "Koala Painter".
Matti Hamalainen <ccr@tnsp.org>
parents: 1813
diff changeset
619 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
620 {
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
621 // 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
622 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
623 buf->len < 10002 &&
1594
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
624 dmCompareAddr16(buf, 0, fmt->addr))
1771
c261db6e39aa Adjust some probe scores.
Matti Hamalainen <ccr@tnsp.org>
parents: 1770
diff changeset
625 return DM_PROBE_SCORE_GOOD;
1594
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
626
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
627 return DM_PROBE_SCORE_FALSE;
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
628 }
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
629
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
630
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
631 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
632 {
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
633 if (buf->len > 32 &&
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
634 (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
635 {
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
636 // 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
637 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
638 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
639 return DM_PROBE_SCORE_MAX;
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
640
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
641 // 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
642 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
643 return DM_PROBE_SCORE_MAX;
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
644 }
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
645
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
646 return DM_PROBE_SCORE_FALSE;
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
647 }
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
648
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
649
2161
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
650 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
651 {
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
652 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
653 dmCompareAddr16(buf, 0, 0x2000))
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
654 return DM_PROBE_SCORE_MAX;
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
655
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
656 return DM_PROBE_SCORE_FALSE;
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
657 }
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
658
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
659
1839
666b27999570 As the Koala Painter plain RLE compression (without headers and static
Matti Hamalainen <ccr@tnsp.org>
parents: 1838
diff changeset
660 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
661 {
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
662 int res;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
663 DMGrowBuf mem;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
664 DMCompParams cfg;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
665
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
666 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
667 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
668 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
669 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
670
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
671 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
672 goto out;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
673
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
674 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
675
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
676 out:
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
677 dmGrowBufFree(&mem);
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
678 return res;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
679 }
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
680
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
681
1839
666b27999570 As the Koala Painter plain RLE compression (without headers and static
Matti Hamalainen <ccr@tnsp.org>
parents: 1838
diff changeset
682 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
683 {
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
684 int res;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
685 DMGrowBuf tmp;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
686 DMCompParams cfg;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
687
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
688 // 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
689 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
690 goto out;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
691
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
692 // 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
693 cfg.func = fmt->name;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
694 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
695 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
696 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
697 cfg.rleMinCountB = 4;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
698 cfg.rleMaxCountB = 255;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
699 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
700
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
701 out:
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
702 dmGrowBufFree(&tmp);
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
703 return res;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
704 }
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
705
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
706
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
707 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
708 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
709 const Uint8 *ident = buf->data + 2;
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
710 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
711 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
712 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
713 ident[11] == '.' && (
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
714 (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
715 (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
716 ))
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
717 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
718
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
719 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
720 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
721
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
722
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
723 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
724 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
725 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
726 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
727 DMCompParams cfg;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
728
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
729 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
730 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
731 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
732 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
733
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
734 if ((res = dmDecodeGenericRLEAlloc(&mem,
1747
5e928618fdc8 Change DMGrowBuf API somewhat and implement more copy operations.
Matti Hamalainen <ccr@tnsp.org>
parents: 1746
diff changeset
735 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
736 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
737
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
738 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
739
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
740 out:
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
741 dmGrowBufFree(&mem);
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
742 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
743 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
744
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
745
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
746 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
747 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
748 int res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
749 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
750 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
751 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
752
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
753 // 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
754 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
755 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
756
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
757 // 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
758 cfg.func = fmt->name;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
759 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
760 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
761 cfg.rleMinCountB = 4;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
762 cfg.rleMaxCountB = 255;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
763
2329
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
764 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
765 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
766
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
767 // 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
768 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
769 !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
770 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
771 res = DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
772 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
773 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
774
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
775 // 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
776 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
777
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
778 out:
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
779 dmGrowBufFree(&tmp);
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
780 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
781 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
782
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
783
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
784 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
785 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
786 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
787 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
788 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
789 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
790
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
791 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
792 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
793
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
794
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
795 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
796 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
797 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
798 (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
799
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
800 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
801 return DMERR_OK;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
802 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
803
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
804
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
805 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
806 const DMC64Image *img, const DMC64ImageCommonFormat *fmt)
1535
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
807 {
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
808 (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
809 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
810 return DMERR_OK;
1535
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
811 }
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
812
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
813
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
814 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
815 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
816 {
2313
866e036d7706 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2311
diff changeset
817 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
866e036d7706 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2311
diff changeset
818 (void) vshift;
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
819
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
820 return dmC64GetGenericMCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
821 bmoffs, scroffs,
2313
866e036d7706 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2311
diff changeset
822 6 - (rasterX & 6), 0,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
823 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
824 }
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
825
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
826
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
827 static const char *fmtBDP5_MagicID = "BDP 5.00";
1662
34d7c708649e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1661
diff changeset
828
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
829 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
830 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
831 if (buf->len > 20 &&
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
832 dmCompareAddr16(buf, 0, fmt->addr) &&
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
833 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
834 return DM_PROBE_SCORE_MAX;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
835
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
836 return DM_PROBE_SCORE_FALSE;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
837 }
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
838
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
839
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
840 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
841 {
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
842 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
843 DMGrowBuf mem, tmp;
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
844 DMCompParams cfg;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
845
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
846 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
847 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
848 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
849 cfg.rleMarkerB = buf->data[8];
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
850 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
851
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
852 // 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
853 // 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
854 // 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
855 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
856 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
857
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
858 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
859
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
860 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
861 goto out;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
862
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
863 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
864
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
865 out:
1792
905c09049fe6 Oops, forgot to free the buffer allocated in the BDP5 decoder. Fixed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1791
diff changeset
866 dmGrowBufFree(&tmp);
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
867 dmGrowBufFree(&mem);
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
868 return res;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
869 }
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
870
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
871
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
872 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
873 {
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
874 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
875 DMGrowBuf mem;
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
876 DMCompParams cfg;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
877
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
878 // 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
879 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
880 goto out;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
881
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
882 // 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
883 cfg.func = fmt->name;
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
884 cfg.type = DM_COMP_RLE_MARKER;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
885 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
886 cfg.rleMinCountB = 4;
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
887 cfg.rleMaxCountB = 255;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
888 cfg.rleMinCountW = 256;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
889 cfg.rleMaxCountW = 1024;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
890
2329
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
891 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
892 goto out;
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
893
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
894 // Add the header bits
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
895 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
896 !dmGrowBufPutU8(buf, cfg.rleMarkerB) ||
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
897 !dmGrowBufPutU8(buf, cfg.rleMarkerW))
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
898 {
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
899 res = DMERR_MALLOC;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
900 goto out;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
901 }
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
902
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
903 // 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
904 res = dmEncodeGenericRLE(buf, &mem, &cfg);
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
905
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
906 out:
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
907 dmGrowBufFree(&mem);
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
908 return res;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
909 }
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
910
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
911
2185
6ba6ca5632d2 Make GunPaint v1.1 writing more accurate.
Matti Hamalainen <ccr@tnsp.org>
parents: 2178
diff changeset
912 static const char *fmtGunPaint_MagicID = "GUNPAINT (JZ) ";
6ba6ca5632d2 Make GunPaint v1.1 writing more accurate.
Matti Hamalainen <ccr@tnsp.org>
parents: 2178
diff changeset
913 #define fmtGunPaint_MagicLen (16)
6ba6ca5632d2 Make GunPaint v1.1 writing more accurate.
Matti Hamalainen <ccr@tnsp.org>
parents: 2178
diff changeset
914 #define fmtGunPaint_MagicOffs (0x03e8)
1776
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
915
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
916 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
917 {
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
918 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
919 dmCompareAddr16(buf, 0, fmt->addr) &&
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
920 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
921 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
922
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
923 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
924 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
925
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
926
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
927 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
928 const DMC64Image *img, const DMC64ImageCommonFormat *fmt)
1776
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
929 {
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
930 (void) op;
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
931 (void) img;
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
932 (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
933
1946
c30dfd5e3227 Add a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 1941
diff changeset
934 // Here we assume that the op triggering this function is
c30dfd5e3227 Add a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 1941
diff changeset
935 // 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
936 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
937
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
938 return DMERR_OK;
1776
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
939 }
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
940
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
941
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
942 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
943 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
944 size_t i, n;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
945
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
946 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
947 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
948
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
949 // 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
950 // as do some GunPaint images ..
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
951 if (buf->len == 9002 ||
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
952 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
953 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
954
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
955 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
956 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
957
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
958 if (n > 50)
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
959 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
960 if (n > 25)
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
961 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
962 if (n > 10)
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
963 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
964
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
965 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
966 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
967
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
968
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
969 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
970 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
971 int res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
972 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
973 DMCompParams cfg;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
974
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
975 // 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
976 // 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
977 if (dmGrowBufCopy(&tmp, buf, 1) == NULL)
768fddda73e9 Convert fmtDecodeAmicaPaintPacked() to use the new DMGrowBuf functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1749
diff changeset
978 return DMERR_MALLOC;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
979
1751
768fddda73e9 Convert fmtDecodeAmicaPaintPacked() to use the new DMGrowBuf functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1749
diff changeset
980 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
981
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
982 // 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
983 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
984 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
985 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
986 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
987
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
988 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
989 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
990
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
991 // 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
992 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
993
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
994 out:
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
995 dmGrowBufFree(&tmp);
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
996 dmGrowBufFree(&mem);
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
997 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
998 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
999
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1000
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
1001 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
1002 {
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
1003 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1004 DMGrowBuf mem;
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
1005 DMCompParams cfg;
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
1006
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
1007 // 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
1008 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
1009 goto out;
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
1010
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
1011 // 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
1012 cfg.func = fmt->name;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
1013 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
1014 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
1015 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
1016 cfg.rleMinCountB = 4;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
1017 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
1018
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1019 res = dmEncodeGenericRLE(buf, &mem, &cfg);
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
1020
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
1021 out:
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1022 dmGrowBufFree(&mem);
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
1023 return res;
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
1024 }
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
1025
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
1026
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1027 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
1028 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1029 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
1030 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
1031 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
1032
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
1033 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
1034 }
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
1035
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
1036
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1037 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
1038 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
1039 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1040 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
1041
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1042 return dmC64GetGenericMCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1043 bmoffs, scroffs,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1044 vshift, rasterY & 7,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1045 0, 0, img->bgcolor);
1806
dcb12cd340d3 Add missing Pentel Paint getpixel function.
Matti Hamalainen <ccr@tnsp.org>
parents: 1805
diff changeset
1046 }
dcb12cd340d3 Add missing Pentel Paint getpixel function.
Matti Hamalainen <ccr@tnsp.org>
parents: 1805
diff changeset
1047
dcb12cd340d3 Add missing Pentel Paint getpixel function.
Matti Hamalainen <ccr@tnsp.org>
parents: 1805
diff changeset
1048
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1049 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
1050 {
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1051 if (buf->len > 16 &&
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1052 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
1053 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
1054 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
1055 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
1056
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1057 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
1058 }
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1059
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1060
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1061 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
1062 {
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1063 int res;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1064 DMGrowBuf dst, src;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1065 DMCompParams cfg;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1066
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1067 cfg.func = fmt->name;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1068 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
1069 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
1070 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
1071 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
1072 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
1073
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1074 // 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
1075 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
1076
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1077 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
1078 goto out;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1079
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1080 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
1081
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1082 out:
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1083 dmGrowBufFree(&dst);
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1084 return res;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1085 }
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1086
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1087
1832
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1088 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
1089 {
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1090 int res;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1091 DMGrowBuf tmp1, tmp2;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1092 DMCompParams cfg;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1093
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1094 dmGrowBufInit(&tmp1);
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1095 dmGrowBufInit(&tmp2);
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1096
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1097 // 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
1098 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
1099 goto out;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1100
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1101 // 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
1102 cfg.func = fmt->name;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1103 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
1104 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
1105 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
1106 cfg.rleMinCountB = 4;
1832
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1107 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
1108
2329
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
1109 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
1110 goto out;
1832
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1111
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1112 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
1113 goto out;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1114
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1115 // 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
1116 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
1117 !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
1118 !dmGrowBufPutU16LE(buf, 0x7f3f) ||
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1119 !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
1120 {
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1121 res = DMERR_MALLOC;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1122 goto out;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1123 }
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1124
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1125 out:
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1126 dmGrowBufFree(&tmp1);
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1127 dmGrowBufFree(&tmp2);
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1128 return res;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1129 }
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1130
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
1131
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1132 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
1133 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
1134 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1135 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
1136
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1137 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
1138 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
1139
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1140 return dmC64GetGenericMCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1141 bmoffs, scroffs,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1142 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
1143 0, 0, bgcol);
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1144 }
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1145
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1146
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1147 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
1148 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
1149 {
2313
866e036d7706 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2311
diff changeset
1150 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
866e036d7706 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2311
diff changeset
1151 (void) vshift;
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1152
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1153 return dmC64GetGenericMCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1154 bmoffs, scroffs,
2313
866e036d7706 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2311
diff changeset
1155 6 - (rasterX & 6), 0,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1156 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
1157 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1158
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1159
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1160 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
1161 {
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1162 // 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
1163 // relocation of decompression code
1684
e7990551c6d6 Rename function variable.
Matti Hamalainen <ccr@tnsp.org>
parents: 1671
diff changeset
1164 static const Uint8 magicID[] = {
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1165 0x0b, 0x08, 0x09, 0x00, 0x9e, 0x32, 0x30, 0x35,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1166 0x39, 0x00, 0xa2, 0x00, 0x78, 0xbd, 0x1c, 0x08,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1167 0x9d, 0xf5, 0x00, 0xe8, 0xd0, 0xf7, 0xe6, 0x01,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1168 0x4c, 0x01, 0x01, 0xa5, 0xfe, 0xd0, 0x02, 0xc6,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1169 0xff, 0xc6, 0xfe
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
1789
9f5c5ab0e85e Adjust True Paint probing to be slightly more forgiving vs. file size.
Matti Hamalainen <ccr@tnsp.org>
parents: 1788
diff changeset
1172 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
1173 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
1174 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
1175 return DM_PROBE_SCORE_MAX;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1176
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1177 return DM_PROBE_SCORE_FALSE;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1178 }
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 //
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1182 // 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
1183 // 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
1184 // simplistic "codebook".
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1185 //
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1186 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
1187 {
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1188 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
1189 {
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1190 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
1191 "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
1192 }
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1193 else
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1194 return DMERR_OK;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1195 }
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1196
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1197
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1198 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
1199 {
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1200 int res = DMERR_OK;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1201 const Uint8 *codeBook1, *codeBook2;
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1202 DMGrowBuf dst, src;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1203 DMCompParams cfg;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1204 Uint8 data;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1205
1724
12504f179749 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1723
diff changeset
1206 // 1b7e-67e8 decoded by original depacker
12504f179749 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1723
diff changeset
1207 // 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
1208 cfg.func = fmt->name;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1209 cfg.type = DM_COMP_RLE_MARKER;
1724
12504f179749 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1723
diff changeset
1210 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
1211 cfg.rleMarkerB = 0xfe;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1212 cfg.cropOutLen = 0x67e8 - 0x1c00;
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1213
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1214 // 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
1215 codeBook1 = psrc->data + 0x81 - 2;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1216 codeBook2 = psrc->data + 0x85 - 2;
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1217
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1218 // Allocate output buffer
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1219 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
1220 goto out;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1221
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1222 // 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
1223 // 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
1224 dmGrowBufConstCopy(&src, psrc);
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1225 dmSetupRLEBuffers(&dst, &src, &cfg);
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1226
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1227 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
1228 {
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1229 unsigned int count = 1;
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1230 BOOL found = FALSE;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1231
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1232 for (int n = 0; n < 8; n++)
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1233 if (codeBook1[n] == data && !found)
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1234 {
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1235 found = TRUE;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1236 switch (n)
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1237 {
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1238 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
1239 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
1240 goto out;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1241
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1242 count = data;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1243 if (data == 0)
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1244 goto finish;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1245
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1246 // fallthrough
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1247
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1248 case 1: // Y = 1, JTO = $17
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1249 count += 2;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1250 // fallthrough
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1251
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1252 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
1253 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
1254 goto out;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1255 break;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1256
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1257 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
1258 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
1259 goto out;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1260
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1261 count = data;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
1262 // fallthrough
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1263
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1264 case 3: // Y = 3, JTO = $0B
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1265 count += 2;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1266 data = 0;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1267 break;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1268
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1269 default: // Y = [5..8], JTO = $00
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1270 count++;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1271 data = codeBook2[n];
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1272 break;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1273 }
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1274 }
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1275
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1276 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
1277 goto out;
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1278 }
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1279
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1280 finish:
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1281 dmFinishRLEBuffers(&dst, &src, &cfg);
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1282 res = dmC64DecodeGenericBMP(img, &dst, fmt);
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1283
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1284 out:
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
1285 dmGrowBufFree(&dst);
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1286 return res;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1287 }
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1288
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1289
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1290 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
1291 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
1292 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1293 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
1294 const int vbank = rasterY & 7;
2302
7c26b5f86ff7 Cosmetic.
Matti Hamalainen <ccr@tnsp.org>
parents: 2301
diff changeset
1295 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
1296 int res;
2300
a494e4a4b6bc Minor improvements to Flinterlazer support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2299
diff changeset
1297
a494e4a4b6bc Minor improvements to Flinterlazer support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2299
diff changeset
1298 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
1299 (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
1300 return res;
2300
a494e4a4b6bc Minor improvements to Flinterlazer support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2299
diff changeset
1301
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1302 *(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
1303 return DMERR_OK;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1304 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1305
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1306
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1307 enum
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1308 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1309 I_BRK = 0x00,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1310 I_RTS = 0x60,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1311 I_LDA_IMD = 0xa9,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1312 I_STA_ABS = 0x8d,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1313 };
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1314
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1315
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1316 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
1317 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1318 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
1319 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
1320 Uint16 reg_ptr;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1321
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1322 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
1323 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1324 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
1325
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1326 switch (instr)
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1327 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1328 case I_LDA_IMD:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1329 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
1330 goto out;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1331
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1332 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
1333 break;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1334
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1335 case I_STA_ABS:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1336 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
1337 goto out;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1338 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
1339
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1340 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
1341 goto out;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1342 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
1343
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1344 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
1345 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1346 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
1347 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1348 break;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1349
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1350 case I_RTS:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1351 return DMERR_OK;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1352
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1353 default:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1354 return DMERR_INVALID_DATA;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1355 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1356 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1357
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1358 out:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1359 return DMERR_INVALID_DATA;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1360 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1361
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1362
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1363 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
1364 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
1365 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1366 DMGrowBuf tmp;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1367 (void) op;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1368 (void) fmt;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1369
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1370 // 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
1371 // 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
1372 return fmtDecode6502SpeedCode(
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1373 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
1374 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1375
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1376
2541
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1377 static const Uint8 fmtFormatXX3_MagicID_1[] =
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1378 {
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1379 0x01, 0x08, 0x0B, 0x08, 0xF0, 0x02, 0x9E, 0x32,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1380 0x30, 0x36, 0x31, 0x00, 0x00, 0x00, 0xA9, 0x14,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1381 0x8D, 0x18, 0xD0, 0xA2, 0x00, 0xA9, 0x20, 0x9D,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1382 0x00, 0x04, 0x9D, 0x00, 0x05, 0x9D, 0x00, 0x06,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1383 };
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1384
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1385 static int fmtProbeFormatXX3(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1386 {
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1387 if (buf->len == fmt->size &&
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1388 DM_MEMCMP_SIZE(buf->data, fmtFormatXX3_MagicID_1) == 0
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1389 )
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1390 return DM_PROBE_SCORE_MAX;
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1391
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1392 return DM_PROBE_SCORE_FALSE;
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1393 }
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1394
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
1395
2544
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1396 static const Uint8 fmtFormatXX4_MagicID_1[] =
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1397 {
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1398 0x00, 0x1f, 0x78, 0xa9, 0x3b, 0x8d, 0x11, 0xd0,
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1399 0xa9, 0x18, 0x8d, 0x16, 0xd0, 0xa9, 0x18, 0x8d,
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1400 };
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1401
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1402 static int fmtProbeFormatXX4(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1403 {
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1404 if (buf->len >= fmt->size &&
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1405 DM_MEMCMP_SIZE(buf->data, fmtFormatXX4_MagicID_1) == 0
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1406 )
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1407 return DM_PROBE_SCORE_MAX;
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1408
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1409 return DM_PROBE_SCORE_FALSE;
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1410 }
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1411
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
1412
2570
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1413 static const Uint8 fmtFormatXX5_MagicID_1[] =
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1414 {
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1415 0x00, 0x10, 0xa9, 0x01, 0x8d, 0x86, 0x02, 0x20,
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1416 0x44, 0xe5, 0xa9, 0x16, 0x8d, 0x18, 0xd0, 0xa2,
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1417 };
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1418
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1419 static int fmtProbeFormatXX5(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1420 {
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1421 if (buf->len >= fmt->size &&
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1422 DM_MEMCMP_SIZE(buf->data, fmtFormatXX5_MagicID_1) == 0
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1423 )
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1424 return DM_PROBE_SCORE_MAX;
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1425
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1426 return DM_PROBE_SCORE_FALSE;
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1427 }
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1428
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1429
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1430 static int fmtGetPixelXX5(DMC64ScanLine *scan,
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1431 const DMC64Image *img, const int rasterX, const int rasterY)
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1432 {
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1433 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1434
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1435 (void) vshift;
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1436
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1437 return dmC64GetGenericMCPixel(scan->col, img,
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1438 bmoffs, scroffs,
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1439 6 - (rasterX & 6),
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1440 (rasterY & 7),
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1441 rasterX & 1, 0, img->bgcolor);
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1442 }
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1443
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
1444
1668
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1665
diff changeset
1445 #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
1446 #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
1447 #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
1448 #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
1449 #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
1450
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1451
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1452 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
1453 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1454 if (buf->len >= XX2_MIN_SIZE &&
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1455 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
1456 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
1457 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
1458
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1459 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
1460 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1461
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1462
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1463 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
1464 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1465 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1466 DMGrowBuf tmp;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1467
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1468 // 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
1469 // 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
1470 // 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
1471 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
1472 return DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1473
1748
9c4b3fecc510 Use the new DMGrowBuf functions in XX2 format buffer enlarging.
Matti Hamalainen <ccr@tnsp.org>
parents: 1747
diff changeset
1474 tmp.len = tmp.size;
9c4b3fecc510 Use the new DMGrowBuf functions in XX2 format buffer enlarging.
Matti Hamalainen <ccr@tnsp.org>
parents: 1747
diff changeset
1475 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
1476 dmGrowBufFree(&tmp);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1477 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1478 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1479
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1480
1812
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1481 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
1482 {
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1483 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
1484 {
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1485 // Packed variant
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1486 if (fmt->size == 0 &&
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1487 dmCompareAddr16(buf, 2, fmt->addr + buf->len - 3) &&
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1488 dmCompareAddr16(buf, 4, 0x7ff2))
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1489 return DM_PROBE_SCORE_MAX;
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1490
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1491 // Unpacked variant
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1492 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
1493 {
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1494 // 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
1495 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
1496 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
1497 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
1498
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1499 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
1500 }
1812
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1501 }
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1502
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1503 return DM_PROBE_SCORE_FALSE;
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1504 }
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1505
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1506
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1507 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
1508 {
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1509 int res;
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1510 DMGrowBuf tmp;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1511 Uint8 data, *dstBuf;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1512 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
1513 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
1514 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
1515
2149
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1516 // Allocate output buffer
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1517 if ((dstBuf = dmMalloc0(dstSize)) == NULL)
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1518 {
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1519 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
1520 "Could not allocate memory for RLE decoding buffer.\n");
2149
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1521 }
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1522
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
1523 // 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
1524 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
1525 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
1526
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1527 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
1528 {
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
1529 // 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
1530 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
1531
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1532 // 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
1533 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
1534 {
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1535 // RLE run
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1536 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
1537 {
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1538 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
1539 "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
1540 goto out;
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1541 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1542
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
1543 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
1544 data = psrc->data[--srcOffs];
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1545
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1546 if (dstOffs < ncount)
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1547 goto finish;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1548
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1549 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
1550
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
1551 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
1552 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
1553
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
1554 srcOffs--;
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1555 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1556 else
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1557 {
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1558 // 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
1559 ncount = data;
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1560 if (srcOffs < ncount)
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1561 ncount = srcOffs;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1562
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1563 if (dstOffs < ncount)
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1564 ncount = dstOffs;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1565
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1566 srcOffs -= ncount;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1567 dstOffs -= ncount - 1;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1568
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1569 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
1570 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
1571 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1572 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1573
2149
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1574 finish:
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1575
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
1576 // 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
1577 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
1578 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
1579
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
1580 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
1581 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
1582
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
1583 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
1584 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
1585
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1586 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
1587
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1588 out:
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1589 dmFree(dstBuf);
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1590 return res;
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1591 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1592
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1593
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1594 static const char *fmtFunPaint2_MagicID = "FUNPAINT (MT) ";
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1595 #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
1596
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1597
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1598 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
1599 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1600 if (buf->len > 30 &&
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1601 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
1602 {
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1603 // Unpacked variant
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1604 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
1605 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
1606
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1607 // Packed variant
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1608 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
1609 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
1610 }
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1611
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1612 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
1613 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1614
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1615
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1616 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
1617 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1618 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1619 DMGrowBuf tmp;
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1620
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1621 // 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
1622 if (buf->data[14])
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1623 {
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1624 DMGrowBuf mem;
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1625 DMCompParams cfg;
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1626
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
1627 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
1628 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
1629 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
1630 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
1631
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1632 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
1633 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
1634
1598
b5e0f28f1842 Adjust Fun Paint 2 decoding now that the RLE decoding is fixed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1594
diff changeset
1635 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
1636 &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
1637 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
1638
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1639 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
1640 dmGrowBufFree(&tmp);
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1641 }
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1642 else
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1643 {
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1644 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
1645 }
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1646
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1647 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1648 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1649
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1650
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1651 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
1652 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1653 // Add the header bits
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1654 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
1655 !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
1656 !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
1657 return DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1658
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1659 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
1660 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1661
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1662
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1663 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
1664 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1665 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1666 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
1667 DMCompParams cfg;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1668
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1669 // 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
1670 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
1671 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1672
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
1673 // 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
1674 cfg.func = fmt->name;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
1675 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
1676 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
1677 cfg.rleMinCountB = 4;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
1678 cfg.rleMaxCountB = 255;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1679
2329
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
1680 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
1681 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
1682
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1683 // Add the header bits
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1684 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
1685 !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
1686 !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
1687 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1688 res = DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1689 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1690 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1691
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1692 // 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
1693 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
1694
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1695 out:
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1696 dmGrowBufFree(&mem);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1697 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1698 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1699
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1700
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1701 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
1702 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
1703 {
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1704 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1705 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
1706 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
1707 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
1708
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1709 (void) vshift;
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1710
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1711 return dmC64GetGenericMCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1712 bmoffs, scroffs,
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1713 6 - (rasterX & 6),
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1714 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
1715 bitmap, 0, bgcol);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1716 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1717
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1718
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1719 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
1720 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
1721 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1722 DM_C64_GENERIC_MC_PIXEL_DEFS(img)
1857
5d9dd663df8d Fix Pu-239 BFLI / BigFLI support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1856
diff changeset
1723 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
1724 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
1725
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1726 return dmC64GetGenericMCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1727 bmoffs & 0x1fff, scroffs & 0x3ff,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1728 vshift, vbank,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1729 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
1730 }
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
1731
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
1732
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1733 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
1734 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
1735 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1736 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
2163
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1737 const int spr_y = rasterY / D64_SPR_HEIGHT_PX;
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1738 const int spr_yd = rasterY % D64_SPR_HEIGHT_PX;
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1739 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
1740 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
1741 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
1742 const int mask = 1 << (7 - (rasterX & 7));
2163
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1743 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
1744
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1745 Uint8 color1,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1746 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
1747 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
1748
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1749 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
1750 return res;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1751
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1752 *(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
1753 return DMERR_OK;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1754 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1755
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1756
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1757 // 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
1758 #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
1759 #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
1760
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1761 // 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
1762 #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
1763 #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
1764
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1765 #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
1766 #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
1767
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1768 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
1769 {
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1770 { 0x80, 0x84, 0x85, 0x89, 0x8A, 0x8E, 0x8F, 0x93 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1771 { 0x94, 0x98, 0x99, 0x9D, 0x9E, 0xA2, 0xA3, 0xA7 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1772 { 0xA8, 0xAC, 0xAD, 0xB1, 0xB2, 0xB6, 0xB7, 0xBB },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1773 { 0xBC, 0xC0, 0xC1, 0xC5, 0xC6, 0xCA, 0xCB, 0xCF },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1774 { 0xD0, 0xD4, 0xD5, 0xD9, 0xDA, 0xDE, 0xDF, 0xE3 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1775 { 0xE4, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1776 { 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1777 { 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
1778 };
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1779
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1780
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1781 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
1782 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1783 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
1784 };
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1785
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1786
2167
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1787 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
1788 {
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1789 // 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
1790 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
1791 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
1792 {
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1793 int score = DM_PROBE_SCORE_MAYBE;
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1794 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
1795 {
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1796 if (memcmp(buf->data + 2 + (nbank * 0x0400) + 0x03f8,
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1797 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
1798 score += DM_PROBE_SCORE_GOOD;
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1799 }
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1800 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
1801 }
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1802
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1803 // Packed variant
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1804 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
1805 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
1806 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
1807 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
1808
2167
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1809 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
1810 }
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1811
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1812
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1813 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
1814 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1815 int res;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1816 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
1817 DMCompParams cfg;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1818
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1819 // 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
1820 // 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
1821 // 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
1822 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
1823 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
1824 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
1825 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
1826
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1827 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
1828 &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
1829 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1830 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
1831 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
1832 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
1833
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1834 // 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
1835 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
1836 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1837 res = dmError(DMERR_INVALID_DATA,
2389
647671a9a0b8 More printf() format specifier size_t -related fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2378
diff changeset
1838 "%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
1839 " 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
1840 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
1841 goto out;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1842 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1843
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1844 // 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
1845 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
1846 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1847 res = dmError(DMERR_MALLOC,
2389
647671a9a0b8 More printf() format specifier size_t -related fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2378
diff changeset
1848 "%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
1849 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
1850 goto out;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1851 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1852
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1853 // 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
1854 // 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
1855 //
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1856 // 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
1857 // 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
1858 // 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
1859 // 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
1860 // 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
1861 //
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1862
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1863 // 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
1864 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
1865 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
1866 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
1867 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
1868
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1869 // 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
1870 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
1871 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1872 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
1873
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1874 // 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
1875 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
1876
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1877 // 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
1878 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
1879 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1880
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1881 // 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
1882 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
1883 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1884 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
1885 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
1886
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1887 // 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
1888 // 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
1889 // 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
1890 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
1891 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
1892 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
1893
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1894 // 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
1895 // 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
1896 // 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
1897 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
1898 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
1899
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1900 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
1901 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1902 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
1903 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
1904 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1905
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1906 // 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
1907 // 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
1908 // next bank, etc.
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1909 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
1910 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
1911
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1912 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
1913 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1914 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
1915 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
1916 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1917 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1918
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1919 // 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
1920 // 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
1921 // 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
1922 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
1923 {
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1924 const int yd = yc % D64_SPR_HEIGHT_PX;
2190
0447f4c6c32b Fix a const discard issue.
Matti Hamalainen <ccr@tnsp.org>
parents: 2189
diff changeset
1925 const Uint8 *sprPtrs = fmtCrestSHFLI_Sprite_pointers[yc % 8];
0447f4c6c32b Fix a const discard issue.
Matti Hamalainen <ccr@tnsp.org>
parents: 2189
diff changeset
1926 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
1927
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1928 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
1929 sp1 = mem.data + DM_CREST_SHFLI_IMG_WIDTH * yc;
2191
488130151097 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2190
diff changeset
1930 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
1931
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1932 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
1933 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1934 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
1935 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
1936 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
1937
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1938 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
1939 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
1940 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
1941 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1942 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1943
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1944 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
1945 dmFree(dstBuf);
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1946 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1947
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1948 out:
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1949 dmGrowBufFree(&mem);
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1950
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1951 return res;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1952 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1953
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1954
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1955 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
1956 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
1957 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
1958 {
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1959 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
1960
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1961 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
1962 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
1963
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1964 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
1965 {
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1966 *(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
1967 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
1968 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1969
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1970 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
1971 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1972
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1973
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1974 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
1975 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
1976 {
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1977 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
1978 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
1979 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
1980 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
1981 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
1982
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1983 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
1984 {
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1985 *(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
1986 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
1987 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1988
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1989 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
1990 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
1991 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
1992 {
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1993 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
1994 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
1995 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
1996 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
1997 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
1998 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
1999 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
2000
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
2001 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
2002 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
2003 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
2004
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
2005 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
2006 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
2007 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
2008
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
2009 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
2010 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
2011 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
2012 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
2013
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
2014 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
2015 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
2016
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
2017 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
2018 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
2019
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
2020
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
2021 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
2022 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
2023 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
2024 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
2025 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
2026 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
2027
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
2028 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
2029 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
2030
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
2031 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
2032 bmoffs, scroffs,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
2033 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
2034 0, vbank, bgcol);
1876
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2035 }
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2036
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2037
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
2038 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
2039 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
2040 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
2041 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
2042
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
2043 return dmC64GetGenericSCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
2044 bmoffs, scroffs,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
2045 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
2046 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2047
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2048
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
2049 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
2050 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
2051 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
2052 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
2053 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
2054 Uint8 color1, color2;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
2055 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
2056
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
2057 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
2058 (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
2059 return res;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
2060
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
2061 *(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
2062 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
2063 }
183d503b17a7 Implement support for hires FLI interlaced "ECI Graphic Editor 1.0 (unpacked)" format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1731
diff changeset
2064
183d503b17a7 Implement support for hires FLI interlaced "ECI Graphic Editor 1.0 (unpacked)" format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1731
diff changeset
2065
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
2066 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
2067 {
2168
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2068 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
2069
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2070 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
2071 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
2072 {
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2073 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
2074
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2075 // 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
2076 // 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
2077 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
2078 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
2079
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2080 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
2081 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
2082 else
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2083 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
2084 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
2085 else
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2086 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
2087 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
2088 }
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2089
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2090 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
2091 buf->len == 16386 ||
1979
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2092 // Face Painter
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2093 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
2094 score /= 3;
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2095
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2096 return score;
1739
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2097 }
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2098
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2099
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2100 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
2101 {
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2102 int res;
2170
7c4c9013e412 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2169
diff changeset
2103 DMGrowBuf mem, tmp;
1739
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2104 DMCompParams cfg;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2105
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2106 cfg.func = fmt->name;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2107 cfg.type = DM_COMP_RLE_MARKER;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2108 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
2109 cfg.rleMarkerB = buf->data[0];
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2110
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2111 if ((res = dmDecodeGenericRLEAlloc(
1747
5e928618fdc8 Change DMGrowBuf API somewhat and implement more copy operations.
Matti Hamalainen <ccr@tnsp.org>
parents: 1746
diff changeset
2112 &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
2113 res = dmC64DecodeGenericBMP(img, &mem, fmt);
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2114
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2115 dmGrowBufFree(&mem);
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2116 return res;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2117 }
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2118
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2119
1912
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2120 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
2121 {
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2122 int res;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2123 DMGrowBuf tmp;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2124 DMCompParams cfg;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2125
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2126 // 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
2127 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
2128 goto out;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2129
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2130 // 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
2131 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
2132 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
2133 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
2134 cfg.rleMinCountB = 4;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2135 cfg.rleMaxCountB = 255;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2136
2331
6dc64deb6718 Missed on dmGenericRLEAnalyze() call from a previous commit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2329
diff changeset
2137 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
2138 goto out;
1912
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2139
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2140 // 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
2141 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
2142 {
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2143 res = DMERR_MALLOC;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2144 goto out;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2145 }
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2146
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2147 // 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
2148 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
2149
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2150 out:
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2151 dmGrowBufFree(&tmp);
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2152 return res;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2153 }
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2154
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2155
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2156 //
1795
c8d690e8f9e9 Fix some typos in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1792
diff changeset
2157 // Helper macros for defining screen memory layouts
c8d690e8f9e9 Fix some typos in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1792
diff changeset
2158 // 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
2159 //
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2160 #define DEF_REPEAT_BLOCK(dop, dtype, start, oindex, bindex, osize, bsize, oflags) \
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2161 { (dop), (dtype), (start) + ((osize) * (oindex)), (bindex), (bsize), 0, NULL, NULL, (oflags) }
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2162
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2163 #define DEF_REPEAT_BLOCK_8(dop, dtype, start, sindex, osize, bsize, oflags) \
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2164 DEF_REPEAT_BLOCK((dop), (dtype), (start), 0, ((sindex) + 0), (osize), (bsize), (oflags)), \
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2165 DEF_REPEAT_BLOCK((dop), (dtype), (start), 1, ((sindex) + 1), (osize), (bsize), (oflags)), \
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2166 DEF_REPEAT_BLOCK((dop), (dtype), (start), 2, ((sindex) + 2), (osize), (bsize), (oflags)), \
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2167 DEF_REPEAT_BLOCK((dop), (dtype), (start), 3, ((sindex) + 3), (osize), (bsize), (oflags)), \
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2168 DEF_REPEAT_BLOCK((dop), (dtype), (start), 4, ((sindex) + 4), (osize), (bsize), (oflags)), \
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2169 DEF_REPEAT_BLOCK((dop), (dtype), (start), 5, ((sindex) + 5), (osize), (bsize), (oflags)), \
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2170 DEF_REPEAT_BLOCK((dop), (dtype), (start), 6, ((sindex) + 6), (osize), (bsize), (oflags)), \
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2171 DEF_REPEAT_BLOCK((dop), (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
2172
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2173
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2174 //
1861
752893fa6412 Update a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 1860
diff changeset
2175 // 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
2176 // 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
2177 // 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
2178 //
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2179 DMC64ImageCommonFormat dmC64CommonFormats[] =
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2180 {
1815
2b68b6955635 Rename "Koala Paint" to "Koala Painter".
Matti Hamalainen <ccr@tnsp.org>
parents: 1813
diff changeset
2181 { // #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
2182 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2183 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2184 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
2185 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
2186 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2187 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2188 {
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
2189 { 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
2190 { 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
2191 { 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
2192 { 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
2193 { 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
2194 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2195 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2196
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2197 { // #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
2198 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2199 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2200 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
2201 2, 1,
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2202 NULL, NULL,
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2203 fmtGetPixelBlackMailFLI,
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2204 {
2294
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2205 { DO_COPY , DS_EXTRA_DATA , 0x0000, 0, 200 , 0, NULL, NULL, DF_NORMAL },
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2206 { DO_COPY , DS_COLOR_RAM , 0x0100, 0, 0 , 0, NULL, NULL, DF_NORMAL },
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2207 DEF_REPEAT_BLOCK_8(DO_COPY, DS_SCREEN_RAM , 0x0500, 0, 0x400, 0, DF_NORMAL),
2294
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2208 { DO_COPY , DS_BITMAP_RAM , 0x2500, 0, 0 , 0, NULL, NULL, DF_NORMAL },
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2209
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2210 { 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
2211 { 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
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 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2214
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2215 { // #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
2216 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2217 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2218 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
2219 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
2220 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2221 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2222 {
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
2223 { 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
2224 { 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
2225 { 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
2226 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2227 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2228
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2229 { // #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
2230 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
2231 D64_SCR_WIDTH, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2232 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
2233 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
2234 NULL, NULL,
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2235 fmtGetPixelFunPaint2,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2236 {
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2237 DEF_REPEAT_BLOCK_8(DO_COPY, DS_SCREEN_RAM , 0x0000, 0, 0x400, 0, DF_NORMAL),
2224
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2238 { 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
2239 { 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
2240 { DO_COPY , DS_COLOR_RAM , 0x4000, 0, 0 , 0, NULL, NULL, DF_NORMAL },
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2241 DEF_REPEAT_BLOCK_8(DO_COPY, DS_SCREEN_RAM , 0x43e8, 8, 0x400, 0, DF_NORMAL),
2224
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2242 { 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
2243 { 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
2244 { 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
2245 { 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
2246 { 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
2247 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2248 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2249
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2250 { // #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
2251 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2252 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2253 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
2254 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
2255 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2256 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2257 {
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
2258 { 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
2259 { 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
2260 { 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
2261 { 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
2262 { 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
2263 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2264 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2265
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2266 { // #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
2267 D64_FMT_MC | D64_FMT_ILACE,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2268 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2269 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
2270 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
2271 NULL, NULL,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
2272 fmtGetPixelDrazLace,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2273 {
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
2274 { 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
2275 { 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
2276 { 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
2277 { 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
2278 { 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
2279 { 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
2280 { 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
2281 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2282 },
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2283
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2284 { // #6: TruePaint
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2285 D64_FMT_MC | D64_FMT_ILACE,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2286 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2287 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
2288 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
2289 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2290 fmtGetPixelTruePaint,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2291 {
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
2292 { 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
2293 { 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
2294 { 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
2295 { 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
2296 { 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
2297 { 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
2298 { 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
2299 { 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
2300 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2301 },
1739
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2302
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2303 { // #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
2304 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
2305 D64_SCR_WIDTH, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2306 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
2307 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
2308 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
2309 fmtGetPixelECI,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2310 {
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
2311 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2312 DEF_REPEAT_BLOCK_8(DO_COPY, DS_SCREEN_RAM , 0x2000, 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
2313 { DO_COPY , DS_BITMAP_RAM , 0x4000, 1, 0, 0, NULL, NULL, DF_NORMAL },
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2314 DEF_REPEAT_BLOCK_8(DO_COPY, 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
2315 { 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
2316 { 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
2317 { 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
2318 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2319 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2320
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2321 { // #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
2322 D64_FMT_HIRES | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2323 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
2324 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
2325 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
2326 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2327 fmtGetPixelCrestHIFLIorCDHM,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2328 {
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
2329 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2330 DEF_REPEAT_BLOCK_8(DO_COPY, 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
2331 { 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
2332 { 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
2333 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2334 },
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
2335
2018
1c45b2fb471d Adjust a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 2015
diff changeset
2336 { // #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
2337 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2338 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2339 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
2340 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
2341 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
2342 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
2343 {
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
2344 { DO_COPY , DS_COLOR_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2345 DEF_REPEAT_BLOCK_8(DO_COPY, DS_SCREEN_RAM, 0x0400, 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
2346 { DO_COPY , DS_BITMAP_RAM , 0x2400, 0, 0, 0, NULL, NULL, DF_NORMAL },
2545
e028058648ea Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2544
diff changeset
2347 { 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
2348 { 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
2349 }
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
2350 },
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2351
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2352 { // #10: Doodle
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2353 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2354 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2355 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
2356 1, 1,
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2357 NULL, NULL,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2358 NULL,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2359 {
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
2360 { 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
2361 { 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
2362 { 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
2363 }
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2364 },
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2365
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2366 { // #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
2367 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
2368 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
2369 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
2370 1, 1,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2371 NULL, NULL,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2372 fmtGetPixelCrestSHFLI,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2373 {
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2374 DEF_REPEAT_BLOCK_8(DO_COPY, DS_SCREEN_RAM, 0x0000, 0 , 0x0400, 0x0400, DF_NORMAL),
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2375 DEF_REPEAT_BLOCK_8(DO_COPY, DS_EXTRA_DATA, 0x03f8, 0 , 0x0400, 8, DF_DECODE), // Sprite pointers for each bank
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
2376 { 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
2377 { 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
2378 { 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
2379 { 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
2380 { 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
2381 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2382 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2383 };
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2384
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2385
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2386 //
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2387 // 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
2388 //
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2389 DMC64ImageFormat dmC64ImageFormats[] =
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2390 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2391 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2392 "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
2393 fmtProbeDrazPaint20Packed,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2394 fmtDecodeDrazPaintPacked, fmtEncodeDrazPaintPacked,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2395 { 0 }, &dmC64CommonFormats[4]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2396 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2397
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2398 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2399 "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
2400 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2401 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2402 { 0 }, &dmC64CommonFormats[4]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2403 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2404
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2405 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2406 "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
2407 fmtProbeDrazLace10Packed,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2408 fmtDecodeDrazPaintPacked, fmtEncodeDrazPaintPacked,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2409 { 0 }, &dmC64CommonFormats[5]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2410 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2411
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2412 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2413 "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
2414 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2415 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2416 { 0 }, &dmC64CommonFormats[5]
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2417 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2418
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2419 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2420 "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
2421 fmtProbeBDP5Packed,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2422 fmtDecodeBDP5Packed, fmtEncodeBDP5Packed,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2423 { 0 }, &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
2424 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2425
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2426 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2427 "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
2428 NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2429 NULL, NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2430 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2431 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2432 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2433 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
2434 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
2435 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2436 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2437 {
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
2438 { 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
2439 { 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
2440 { 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
2441 { 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
2442 { 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
2443 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2444 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2445 NULL
1574
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2446 },
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2447
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2448 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2449 "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
2450 NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2451 NULL, NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2452 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2453 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2454 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2455 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
2456 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
2457 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2458 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2459 {
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
2460 { 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
2461 { 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
2462 { 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
2463 { 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
2464 { 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
2465 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2466 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2467 NULL
1574
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2468 },
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2469
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2470 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2471 "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
2472 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2473 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2474 { 0 }, &dmC64CommonFormats[6]
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2475 },
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2476
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2477 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2478 "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
2479 fmtProbeTruePaintPacked,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2480 fmtDecodeTruePaintPacked, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2481 { 0 }, &dmC64CommonFormats[6]
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2482 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2483
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2484 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2485 "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
2486 fmtProbeKoalaPainter,
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2487 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2488 { 0 }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2489 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2490
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2491 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2492 "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
2493 fmtProbeKoalaPainterPacked,
1839
666b27999570 As the Koala Painter plain RLE compression (without headers and static
Matti Hamalainen <ccr@tnsp.org>
parents: 1838
diff changeset
2494 fmtDecodeStaticRLEMarkerMode2, fmtEncodeStaticRLEMarkerMode2,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2495 { 0 }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2496 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2497
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2498 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2499 "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
2500 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2501 NULL, NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2502 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2503 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2504 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2505 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
2506 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
2507 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2508 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2509 {
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
2510 { 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
2511 { 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
2512 { 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
2513 { 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
2514 { 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
2515 { 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
2516 },
1593
a77876a07425 Oops, missed this from the last commit.
Matti Hamalainen <ccr@tnsp.org>
parents: 1592
diff changeset
2517 },
a77876a07425 Oops, missed this from the last commit.
Matti Hamalainen <ccr@tnsp.org>
parents: 1592
diff changeset
2518 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2519 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2520
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2521 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2522 "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
2523 NULL,
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2524 NULL, NULL,
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2525 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2526 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2527 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2528 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
2529 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
2530 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2531 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2532 {
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
2533 { 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
2534 { 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
2535 { 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
2536 { 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
2537 { 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
2538 }
1755
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2539 },
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2540 NULL
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2541 },
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2542
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2543 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2544 "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
2545 fmtProbeMicroIllustrator,
1758
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2546 NULL, NULL,
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2547 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2548 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2549 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2550 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
2551 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
2552 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2553 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2554 {
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
2555 { 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
2556 { 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
2557 { 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
2558 // 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
2559 { 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
2560 { 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
2561 { 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
2562 { 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
2563 { 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
2564 { 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
2565 { 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
2566 }
1758
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2567 },
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2568 NULL
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2569 },
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2570
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2571 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2572 "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
2573 NULL,
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2574 NULL, NULL,
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2575 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2576 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2577 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2578 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
2579 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
2580 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2581 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2582 {
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
2583 { 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
2584 { 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
2585 { 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
2586 { 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
2587 { 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
2588 }
1754
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2589 },
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2590 NULL
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2591 },
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2592
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2593 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2594 "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
2595 NULL,
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2596 NULL, NULL,
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2597 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2598 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2599 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2600 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
2601 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
2602 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2603 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2604 {
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
2605 { 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
2606 { 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
2607 { 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
2608 // 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
2609 { 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
2610 { 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
2611 }
1763
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2612 },
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2613 NULL
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2614 },
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2615
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2616 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2617 "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
2618 fmtProbeSaracenPaint,
1769
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2619 NULL, NULL,
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2620 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2621 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2622 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2623 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
2624 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
2625 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2626 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2627 {
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
2628 { 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
2629 { 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
2630 { 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
2631 { 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
2632 { 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
2633 }
1769
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2634 },
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2635 NULL
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2636 },
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2637
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2638 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2639 "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
2640 NULL,
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2641 NULL, NULL,
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2642 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2643 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2644 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2645 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
2646 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
2647 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2648 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2649 {
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
2650 { 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
2651 // 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
2652 { 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
2653 { 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
2654 { 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
2655 { 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
2656 { 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
2657 }
1770
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2658 },
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2659 NULL
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2660 },
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2661
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2662 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2663 "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
2664 NULL,
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2665 NULL, NULL,
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2666 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2667 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2668 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2669 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
2670 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
2671 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2672 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2673 {
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
2674 { 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
2675 { 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
2676 { 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
2677 { 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
2678 { 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
2679 { 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
2680 }
1762
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2681 },
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2682 NULL
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2683 },
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2684
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2685 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2686 "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
2687 NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2688 NULL, NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2689 {
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2690 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2691 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2692 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
2693 2, 1,
1779
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2694 NULL, NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2695 NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2696 {
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
2697 { 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
2698 { 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
2699 { 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
2700 { 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
2701 { 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
2702 { 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
2703 }
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2704 },
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2705 NULL
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2706 },
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2707
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2708 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2709 "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
2710 fmtProbeAmicaPaintPacked,
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
2711 fmtDecodeAmicaPaintPacked, fmtEncodeAmicaPaintPacked,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2712 { 0 }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2713 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2714
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2715 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2716 "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
2717 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2718 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2719 { 0 }, &dmC64CommonFormats[0]
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2720 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2721
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2722 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2723 "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
2724 NULL,
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2725 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2726 { 0 }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2727 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2728
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2729 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2730 "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
2731 fmtProbeArtStudio,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2732 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2733 { 0 }, &dmC64CommonFormats[2]
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2734 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2735
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2736 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2737 "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
2738 NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2739 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2740 { 0 }, &dmC64CommonFormats[2]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2741 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2742
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2743 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2744 "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
2745 fmtProbeDoodle,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2746 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2747 { 0 }, &dmC64CommonFormats[10]
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2748 },
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2749
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2750 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2751 "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
2752 fmtProbeDoodle,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2753 fmtDecodeStaticRLEMarkerMode2, fmtEncodeStaticRLEMarkerMode2,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2754 { 0 }, &dmC64CommonFormats[10]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2755 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2756
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2757 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2758 "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
2759 NULL,
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2760 NULL, NULL,
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2761 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2762 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2763 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2764 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
2765 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
2766 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2767 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2768 {
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
2769 { 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
2770 { 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
2771 // 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
2772 { 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
2773 }
1670
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2774 },
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2775 NULL
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2776 },
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2777
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2778 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2779 "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
2780 NULL,
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2781 NULL, NULL,
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2782 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2783 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2784 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2785 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
2786 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
2787 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2788 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2789 {
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
2790 { 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
2791 { 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
2792 { 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
2793 }
1671
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2794 },
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2795 NULL
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2796 },
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2797
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2798 {
2537
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2799 "gih", "Gigapaint hires [mono] (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
2800 fmtProbeGigapaintHires,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2801 NULL, NULL,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2802 {
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2803 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2804 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2805 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
2806 1, 1,
1915
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2807 NULL, NULL,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2808 NULL,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2809 {
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
2810 { 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
2811 { 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
2812 { 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
2813 }
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2814 },
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2815 NULL
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2816 },
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2817
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2818 {
2537
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2819 "gic", "Gigapaint hires [color] (unpacked)", 0x6000, 9002, 0, DM_FMT_RDWR,
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2820 fmtProbeGigapaintHires,
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2821 NULL, NULL,
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2822 {
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2823 D64_FMT_HIRES,
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2824 D64_SCR_WIDTH , D64_SCR_HEIGHT,
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2825 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2826 1, 1,
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2827 NULL, NULL,
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2828 NULL,
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2829 {
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2830 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL, DF_NORMAL },
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2831 { DO_COPY , DS_SCREEN_RAM , 0x1f40, 0, 0, 0, NULL, NULL, DF_NORMAL },
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2832 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2833 }
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2834 },
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2835 NULL
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2836 },
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2837
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2838 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2839 "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
2840 NULL,
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2841 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
2842 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2843 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2844 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT * 2,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2845 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
2846 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
2847 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2848 fmtGetPixelBFLI,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2849 {
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
2850 { DO_COPY , DS_COLOR_RAM , 0x0001, 0, 0x400 , 0, NULL, NULL, DF_NORMAL },
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2851 DEF_REPEAT_BLOCK_8(DO_COPY, 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
2852 { DO_COPY , DS_BITMAP_RAM , 0x2401, 0, 0x2000, 0, NULL, NULL, DF_NORMAL },
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2853 DEF_REPEAT_BLOCK_8(DO_COPY, 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
2854 { 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
2855 { 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
2856 { 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
2857 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2858 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2859 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
2860 },
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2861
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2862 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2863 "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
2864 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2865 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2866 { 0 }, &dmC64CommonFormats[1]
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2867 },
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2868
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2869 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2870 "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
2871 fmtProbeBlackMailFLIPacked,
1832
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
2872 fmtDecodeBlackMailFLIPacked, fmtEncodeBlackMailFLIPacked,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2873 { 0 }, &dmC64CommonFormats[1]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2874 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2875
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2876 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2877 "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
2878 NULL,
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2879 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2880 { 0 }, &dmC64CommonFormats[1]
2308
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2881 },
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2882
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2883 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2884 "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
2885 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
2886 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2887 { 0 }, &dmC64CommonFormats[9]
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
2888 },
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
2889
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
2890 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2891 "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
2892 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
2893 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2894 { 0 }, &dmC64CommonFormats[9]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2895 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2896
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2897 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2898 "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
2899 NULL,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2900 NULL, NULL,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2901 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2902 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
2903 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
2904 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
2905 2, 1,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2906 NULL, NULL,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2907 fmtGetPixelFlinterlazer,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2908 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2909 { 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
2910 { 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
2911
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2912 { DO_COPY , DS_BITMAP_RAM , 0x4000 - 0x284e, 0, 0 , 0, NULL, NULL, DF_NORMAL },
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2913 DEF_REPEAT_BLOCK_8(DO_COPY, DS_SCREEN_RAM , 0x6000 - 0x284e, 0, 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
2914
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2915 { DO_COPY , DS_BITMAP_RAM , 0x8000 - 0x284e, 1, 0 , 0, NULL, NULL, DF_NORMAL },
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
2916 DEF_REPEAT_BLOCK_8(DO_COPY, 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
2917
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2918 { 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
2919 { 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
2920 { 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
2921 { 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
2922 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2923 },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2924 NULL
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2925 },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2926
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
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 "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
2929 NULL,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2930 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2931 { 0 }, &dmC64CommonFormats[7]
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2932 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2933
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
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 "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
2936 fmtProbeECIPacked,
1912
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2937 fmtDecodeECIPacked, fmtEncodeECIPacked,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
2938 { 0 }, &dmC64CommonFormats[7]
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2939 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2940
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
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 "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
2943 NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2944 NULL, NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2945 { // 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
2946 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2947 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2948 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
2949 2, 1,
1979
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2950 NULL, NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2951 NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2952 {
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
2953 { 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
2954 { 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
2955 { 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
2956 { 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
2957 { 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
2958 { 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
2959 }
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2960 },
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2961 NULL
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2962 },
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2963
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2964 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2965 "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
2966 NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2967 NULL, NULL,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2968 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2969 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2970 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2971 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
2972 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
2973 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2974 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2975 {
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
2976 { 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
2977 { 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
2978 { 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
2979 { 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
2980 { 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
2981 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2982 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2983 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2984 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2985
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2986 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2987 "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
2988 fmtProbeFormatXX2,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2989 fmtDecodeFormatXX2, NULL,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2990 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2991 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
2992 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
2993 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
2994 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
2995 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2996 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2997 {
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
2998 { 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
2999 { 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
3000 { 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
3001 { 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
3002 { 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
3003 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
3004 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
3005 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3006 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3007
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3008 {
2541
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3009 "xx3", "Unknown $0801 format (viewer) (unpacked)", 0x0801, 10500, 0, DM_FMT_RD,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3010 fmtProbeFormatXX3,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3011 NULL, NULL,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3012 {
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3013 D64_FMT_MC,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3014 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3015 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3016 2, 1,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3017 NULL, NULL,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3018 NULL,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3019 {
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3020 { DO_COPY , DS_BITMAP_RAM , 0x09f2 - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL },
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3021 { DO_COPY , DS_SCREEN_RAM , 0x2932 - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL },
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3022 { DO_SET_MEM_LO , DS_D020 , 0x09e6 - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL },
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3023 { DO_SET_MEM_LO , DS_BGCOL , 0x09e7 - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL },
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3024 { DO_COPY , DS_COLOR_RAM , 0x2d1a - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL },
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3025 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3026 },
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3027 },
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3028 NULL
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3029 },
2544
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3030
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3031 {
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3032 "xx4", "Unknown $1f00 format (unpacked)", 0x1f00, 10260, 0, DM_FMT_RD,
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3033 fmtProbeFormatXX4,
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3034 NULL, NULL,
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3035 {
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3036 D64_FMT_MC,
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3037 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3038 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3039 2, 1,
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3040 NULL, NULL,
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3041 NULL,
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3042 {
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3043 { DO_COPY , DS_BITMAP_RAM , 0x2000 - 0x1f00, 0, 0, 0, NULL, NULL, DF_NORMAL },
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3044 { DO_COPY , DS_SCREEN_RAM , 0x3f40 - 0x1f00, 0, 0, 0, NULL, NULL, DF_NORMAL },
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3045 { DO_COPY , DS_COLOR_RAM , 0x4328 - 0x1f00, 0, 0, 0, NULL, NULL, DF_NORMAL },
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3046 { DO_SET_OP , DS_BGCOL , 0x4710 - 0x1f00, 0, 0, 0, NULL, NULL, DF_NORMAL },
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3047 { DO_SET_OP , DS_D020 , 0x4711 - 0x1f00, 0, 0, 0, NULL, NULL, DF_NORMAL },
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3048 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3049 }
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3050 },
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3051 NULL
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3052 },
0b1e73d49503 Add support for another unknown MC bitmap format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2541
diff changeset
3053
2541
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
3054 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3055 "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
3056 fmtProbeFunPaint2,
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
3057 fmtDecodeFunPaint2, fmtEncodeFunPaint2Unpacked,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
3058 { 0 }, &dmC64CommonFormats[3]
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3059 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3060
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3061 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3062 "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
3063 fmtProbeFunPaint2,
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
3064 fmtDecodeFunPaint2, fmtEncodeFunPaint2Packed,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
3065 { 0 }, &dmC64CommonFormats[3]
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3066 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3067
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3068 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3069 "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
3070 fmtProbeGunPaint,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3071 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3072 {
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3073 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
3074 D64_SCR_WIDTH, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
3075 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
3076 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
3077 NULL, NULL,
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
3078 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
3079 {
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
3080 DEF_REPEAT_BLOCK_8(DO_COPY, DS_SCREEN_RAM , 0x0000, 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
3081 { 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
3082 { 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
3083 { DO_COPY , DS_COLOR_RAM , 0x4000, 0, 0 , 0, NULL, NULL, DF_NORMAL },
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
3084 DEF_REPEAT_BLOCK_8(DO_COPY, DS_SCREEN_RAM , 0x4400, 8, 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
3085 { 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
3086 // 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
3087 // 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
3088 { 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
3089 { 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
3090 { 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
3091 { 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
3092 { 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
3093 }
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3094 },
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3095 NULL
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3096 },
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3097
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3098 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3099 "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
3100 NULL,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3101 NULL, NULL,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3102 {
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3103 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
3104 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
3105 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
3106 2, 1,
1876
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3107 NULL, NULL,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3108 fmtGetPixelHCB,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3109 {
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
3110 { 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
3111 { 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
3112 { 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
3113 { 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
3114 { 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
3115 { 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
3116 { 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
3117 { 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
3118 }
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3119 },
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3120 NULL
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3121 },
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3122
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3123 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3124 "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
3125 NULL,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3126 NULL, NULL,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3127 {
2314
87533af8db64 Add format flag for formats that use sprite layer.
Matti Hamalainen <ccr@tnsp.org>
parents: 2313
diff changeset
3128 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
3129 192, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
3130 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
3131 2, 1,
1805
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3132 NULL, NULL,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3133 fmtGetPixelPentelPaint,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3134 {
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
3135 { 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
3136 { 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
3137 { 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
3138 { 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
3139 { 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
3140 { 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
3141 { 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
3142 { 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
3143 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3144 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3145 NULL
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3146 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3147
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3148 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3149 "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
3150 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3151 NULL, NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3152 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3153 D64_FMT_HIRES | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
3154 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
3155 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
3156 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
3157 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3158 fmtGetPixelCrestHIFLIorCDHM,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3159 {
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
3160 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0 , 0, NULL, NULL, DF_NORMAL },
2546
b76ac594cf33 Change DEF_REPEAT_BLOCK*() macro to have operator argument.
Matti Hamalainen <ccr@tnsp.org>
parents: 2545
diff changeset
3161 DEF_REPEAT_BLOCK_8(DO_COPY, DS_SCREEN_RAM , 0x2000, 0, 0x400, 0, DF_NORMAL),
2545
e028058648ea Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2544
diff changeset
3162 { 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
3163 { 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
3164 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
3165 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
3166 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3167 },
1803
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
3168
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
3169 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3170 "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
3171 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
3172 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
3173 { 0 }, &dmC64CommonFormats[11]
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
3174 },
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
3175
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
3176 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3177 "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
3178 fmtProbeCrestSHFLI,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
3179 fmtDecodeCrestSHFLIPacked, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
3180 { 0 }, &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
3181 },
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
3182
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
3183 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3184 "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
3185 fmtProbeCosmosDesignsHiresManager,
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
3186 NULL, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
3187 { 0 }, &dmC64CommonFormats[8]
1803
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
3188 },
2138
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
3189
2130
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
3190 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3191 "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
3192 fmtProbeCosmosDesignsHiresManager,
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
3193 fmtDecodeCosmosDesignsHiresManagerPacked, NULL,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
3194 { 0 }, &dmC64CommonFormats[8]
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
3195 },
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
3196
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
3197 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3198 "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
3199 fmtProbeMarqPETSCII,
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
3200 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
3201 {
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
3202 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
3203 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
3204 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
3205 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
3206 NULL, NULL,
2172
de88333acc44 Move the PETSCII getpixel function to lib64gfx.c and remove the
Matti Hamalainen <ccr@tnsp.org>
parents: 2170
diff changeset
3207 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
3208 {
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
3209 // 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
3210 { 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
3211 { 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
3212 { 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
3213 { 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
3214 { 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
3215 { 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
3216
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3217 { 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
3218 }
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
3219 },
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
3220 NULL
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
3221 },
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
3222
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3223 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3224 "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
3225 NULL,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3226 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
3227 {
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3228 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
3229 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
3230 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
3231 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
3232 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
3233 NULL,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3234 {
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
3235 { 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
3236 { 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
3237
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
3238 { 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
3239 { 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
3240 { 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
3241
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3242 { 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
3243 }
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3244 },
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3245 NULL
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3246 },
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3247
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3248 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3249 "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
3250 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
3251 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
3252 {
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
3253 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
3254 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
3255 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
3256 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
3257 NULL, NULL,
2172
de88333acc44 Move the PETSCII getpixel function to lib64gfx.c and remove the
Matti Hamalainen <ccr@tnsp.org>
parents: 2170
diff changeset
3258 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
3259 {
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
3260 { 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
3261 { 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
3262
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3263 { 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
3264 { 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
3265 { 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
3266
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3267 { 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
3268 }
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3269 },
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3270 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
3271 },
2362
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3272
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3273 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3274 "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
3275 fmtProbeCocaPETSCII,
2362
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3276 NULL, NULL,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3277 {
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3278 D64_FMT_HIRES | D64_FMT_CHAR,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3279 D64_SCR_WIDTH , D64_SCR_HEIGHT,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3280 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
3281 1, 1,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3282 NULL, NULL,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3283 NULL,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3284 {
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
3285 { 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
3286 { 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
3287 { 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
3288
2362
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3289 { 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
3290 { 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
3291 { 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
3292
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3293 { 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
3294 }
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3295 },
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3296 NULL
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3297 },
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3298
2399
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3299 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3300 "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
3301 NULL,
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3302 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
3303 {
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3304 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
3305 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
3306 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
3307 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
3308 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
3309 NULL,
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3310 {
2428
09082816665d Fix write support of Abyss Connection PETSCII-Editor 4.61 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2399
diff changeset
3311 { 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
3312 { 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
3313 { 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
3314
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3315 { 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
3316 { 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
3317 { 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
3318
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3319 { 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
3320 }
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3321 },
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3322 NULL
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3323 },
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3324
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3325 {
2525
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
3326 "suphi1", "SupeRes hires [clear] (packed)", -1, 0, 0x23, DM_FMT_RDWR,
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3327 fmtProbeSupeRes,
2545
e028058648ea Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2544
diff changeset
3328 fmtDecodeSupeRes, fmtEncodeSupeRes,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
3329 { 0 }, &dmC64CommonFormats[10]
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3330 },
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3331
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3332 {
2525
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
3333 "suphi2", "SupeRes hires [no-clear] (packed)", -1, 0, 0x25, DM_FMT_RDWR,
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3334 fmtProbeSupeRes,
2545
e028058648ea Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2544
diff changeset
3335 fmtDecodeSupeRes, fmtEncodeSupeRes,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
3336 { 0 }, &dmC64CommonFormats[10]
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3337 },
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3338
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3339 {
2525
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
3340 "supmc1", "SupeRes multicolor [clear] (packed)", -1, 0, 0x24, DM_FMT_RDWR,
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3341 fmtProbeSupeRes,
2545
e028058648ea Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2544
diff changeset
3342 fmtDecodeSupeRes, fmtEncodeSupeRes,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
3343 { 0 }, &dmC64CommonFormats[0]
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3344 },
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3345
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3346 {
2525
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
3347 "supmc2", "SupeRes multicolor [no-clear] (packed)", -1, 0, 0x26, DM_FMT_RDWR,
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3348 fmtProbeSupeRes,
2545
e028058648ea Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2544
diff changeset
3349 fmtDecodeSupeRes, fmtEncodeSupeRes,
2573
21d296803fac Use { 0 } initializer instead of {}.
Matti Hamalainen <ccr@tnsp.org>
parents: 2570
diff changeset
3350 { 0 }, &dmC64CommonFormats[0]
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3351 },
2540
a60e046b7294 Add read-only support for another unknown unpacked c64 MC format (contains a viewer routine).
Matti Hamalainen <ccr@tnsp.org>
parents: 2539
diff changeset
3352
2570
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3353 {
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3354 "xx5", "Unknown $1000 format (unpacked)", 0x1000, 45000, 0, DM_FMT_RD | DM_FMT_BROKEN,
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3355 fmtProbeFormatXX5,
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3356 NULL, NULL,
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3357 {
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3358 D64_FMT_HIRES | D64_FMT_FLI | D64_FMT_ILACE,
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3359 D64_SCR_WIDTH , D64_SCR_HEIGHT,
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3360 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3361 1, 1,
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3362 NULL, NULL,
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3363 fmtGetPixelXX5,
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3364 {
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3365 DEF_REPEAT_BLOCK_8(DO_COPY, DS_SCREEN_RAM , 0x4000 - 0x1000, 0, 0x400, 0, DF_NORMAL),
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3366 DEF_REPEAT_BLOCK_8(DO_COPY, DS_SCREEN_RAM , 0x8000 - 0x1000, 8, 0x400, 0, DF_NORMAL),
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3367
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3368 { DO_COPY , DS_BITMAP_RAM , 0x6000 - 0x1000, 0, 0, 0, NULL, NULL, DF_NORMAL },
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3369 { DO_COPY , DS_BITMAP_RAM , 0xa400 - 0x1000, 1, 0, 0, NULL, NULL, DF_NORMAL },
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3370
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3371 { DO_COPY , DS_COLOR_RAM , 0x8000 - 0x1000, 0, 0, 0, NULL, NULL, DF_NORMAL },
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3372
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3373 // BG/FG always 0
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3374 { DO_SET_MEM_LO , DS_BGCOL , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3375 { DO_SET_MEM_LO , DS_D020 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3376
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3377 { DO_SET_OP , DS_EXTRA_INFO , D64_ILACE_RES , 0, 0, D64_EI_ILACE_TYPE, NULL, NULL, DF_DECODE },
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3378 { DO_SET_OP , DS_EXTRA_INFO , D64_FLI_8 , 0, 0, D64_EI_FLI_TYPE, NULL, NULL, DF_DECODE },
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3379 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3380 }
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3381 },
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3382 NULL
1559011d749f Add preliminary support for "Unknown $1000 format (unpacked)" as "xx5".
Matti Hamalainen <ccr@tnsp.org>
parents: 2546
diff changeset
3383 },
2540
a60e046b7294 Add read-only support for another unknown unpacked c64 MC format (contains a viewer routine).
Matti Hamalainen <ccr@tnsp.org>
parents: 2539
diff changeset
3384
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3385 };
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3386
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3387 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
3388