annotate tools/lib64fmts.c @ 2541:671f41166527

Reorder / rename Unknown format 3 to Format XX3.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 27 Jul 2021 08:56:41 +0300
parents a60e046b7294
children 0b1e73d49503
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
1668
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1665
diff changeset
1396 #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
1397 #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
1398 #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
1399 #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
1400 #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
1401
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1402
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1403 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
1404 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1405 if (buf->len >= XX2_MIN_SIZE &&
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1406 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
1407 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
1408 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
1409
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1410 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
1411 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1412
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1413
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1414 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
1415 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1416 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1417 DMGrowBuf tmp;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1418
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1419 // 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
1420 // 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
1421 // 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
1422 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
1423 return DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1424
1748
9c4b3fecc510 Use the new DMGrowBuf functions in XX2 format buffer enlarging.
Matti Hamalainen <ccr@tnsp.org>
parents: 1747
diff changeset
1425 tmp.len = tmp.size;
9c4b3fecc510 Use the new DMGrowBuf functions in XX2 format buffer enlarging.
Matti Hamalainen <ccr@tnsp.org>
parents: 1747
diff changeset
1426 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
1427 dmGrowBufFree(&tmp);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1428 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1429 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1430
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1431
1812
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1432 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
1433 {
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1434 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
1435 {
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1436 // Packed variant
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1437 if (fmt->size == 0 &&
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1438 dmCompareAddr16(buf, 2, fmt->addr + buf->len - 3) &&
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1439 dmCompareAddr16(buf, 4, 0x7ff2))
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1440 return DM_PROBE_SCORE_MAX;
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1441
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1442 // Unpacked variant
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1443 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
1444 {
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1445 // 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
1446 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
1447 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
1448 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
1449
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1450 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
1451 }
1812
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1452 }
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1453
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1454 return DM_PROBE_SCORE_FALSE;
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1455 }
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1456
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1457
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1458 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
1459 {
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1460 int res;
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1461 DMGrowBuf tmp;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1462 Uint8 data, *dstBuf;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1463 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
1464 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
1465 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
1466
2149
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1467 // Allocate output buffer
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1468 if ((dstBuf = dmMalloc0(dstSize)) == NULL)
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1469 {
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1470 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
1471 "Could not allocate memory for RLE decoding buffer.\n");
2149
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1472 }
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1473
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
1474 // 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
1475 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
1476 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
1477
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1478 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
1479 {
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
1480 // 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
1481 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
1482
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1483 // 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
1484 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
1485 {
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1486 // RLE run
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1487 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
1488 {
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1489 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
1490 "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
1491 goto out;
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1492 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1493
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
1494 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
1495 data = psrc->data[--srcOffs];
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1496
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1497 if (dstOffs < ncount)
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1498 goto finish;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1499
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1500 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
1501
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
1502 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
1503 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
1504
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
1505 srcOffs--;
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1506 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1507 else
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1508 {
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1509 // 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
1510 ncount = data;
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1511 if (srcOffs < ncount)
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1512 ncount = srcOffs;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1513
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1514 if (dstOffs < ncount)
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1515 ncount = dstOffs;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1516
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1517 srcOffs -= ncount;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1518 dstOffs -= ncount - 1;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1519
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1520 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
1521 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
1522 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1523 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1524
2149
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1525 finish:
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1526
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
1527 // 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
1528 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
1529 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
1530
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
1531 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
1532 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
1533
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
1534 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
1535 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
1536
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1537 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
1538
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1539 out:
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1540 dmFree(dstBuf);
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1541 return res;
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1542 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1543
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1544
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1545 static const char *fmtFunPaint2_MagicID = "FUNPAINT (MT) ";
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1546 #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
1547
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1548
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1549 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
1550 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1551 if (buf->len > 30 &&
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1552 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
1553 {
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1554 // Unpacked variant
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1555 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
1556 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
1557
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1558 // Packed variant
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1559 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
1560 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
1561 }
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1562
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1563 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
1564 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1565
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1566
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1567 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
1568 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1569 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1570 DMGrowBuf tmp;
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1571
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1572 // 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
1573 if (buf->data[14])
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1574 {
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1575 DMGrowBuf mem;
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1576 DMCompParams cfg;
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1577
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
1578 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
1579 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
1580 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
1581 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
1582
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1583 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
1584 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
1585
1598
b5e0f28f1842 Adjust Fun Paint 2 decoding now that the RLE decoding is fixed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1594
diff changeset
1586 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
1587 &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
1588 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
1589
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1590 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
1591 dmGrowBufFree(&tmp);
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1592 }
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1593 else
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1594 {
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1595 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
1596 }
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1597
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1598 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1599 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1600
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1601
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1602 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
1603 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1604 // Add the header bits
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1605 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
1606 !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
1607 !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
1608 return DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1609
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1610 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
1611 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1612
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1613
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1614 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
1615 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1616 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1617 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
1618 DMCompParams cfg;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1619
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1620 // 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
1621 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
1622 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1623
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
1624 // 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
1625 cfg.func = fmt->name;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
1626 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
1627 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
1628 cfg.rleMinCountB = 4;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
1629 cfg.rleMaxCountB = 255;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1630
2329
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
1631 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
1632 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
1633
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1634 // Add the header bits
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1635 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
1636 !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
1637 !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
1638 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1639 res = DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1640 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1641 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1642
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1643 // 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
1644 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
1645
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1646 out:
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1647 dmGrowBufFree(&mem);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1648 return res;
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
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1651
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1652 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
1653 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
1654 {
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1655 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1656 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
1657 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
1658 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
1659
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1660 (void) vshift;
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1661
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1662 return dmC64GetGenericMCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1663 bmoffs, scroffs,
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1664 6 - (rasterX & 6),
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2302
diff changeset
1665 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
1666 bitmap, 0, bgcol);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1667 }
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
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1670 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
1671 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
1672 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1673 DM_C64_GENERIC_MC_PIXEL_DEFS(img)
1857
5d9dd663df8d Fix Pu-239 BFLI / BigFLI support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1856
diff changeset
1674 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
1675 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
1676
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1677 return dmC64GetGenericMCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1678 bmoffs & 0x1fff, scroffs & 0x3ff,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1679 vshift, vbank,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1680 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
1681 }
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
1682
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
1683
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1684 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
1685 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
1686 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1687 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
2163
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1688 const int spr_y = rasterY / D64_SPR_HEIGHT_PX;
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1689 const int spr_yd = rasterY % D64_SPR_HEIGHT_PX;
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1690 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
1691 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
1692 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
1693 const int mask = 1 << (7 - (rasterX & 7));
2163
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1694 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
1695
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1696 Uint8 color1,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1697 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
1698 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
1699
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1700 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
1701 return res;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1702
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1703 *(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
1704 return DMERR_OK;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1705 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1706
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1707
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1708 // 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
1709 #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
1710 #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
1711
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1712 // 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
1713 #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
1714 #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
1715
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1716 #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
1717 #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
1718
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1719 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
1720 {
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1721 { 0x80, 0x84, 0x85, 0x89, 0x8A, 0x8E, 0x8F, 0x93 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1722 { 0x94, 0x98, 0x99, 0x9D, 0x9E, 0xA2, 0xA3, 0xA7 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1723 { 0xA8, 0xAC, 0xAD, 0xB1, 0xB2, 0xB6, 0xB7, 0xBB },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1724 { 0xBC, 0xC0, 0xC1, 0xC5, 0xC6, 0xCA, 0xCB, 0xCF },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1725 { 0xD0, 0xD4, 0xD5, 0xD9, 0xDA, 0xDE, 0xDF, 0xE3 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1726 { 0xE4, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1727 { 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1728 { 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
1729 };
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1730
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1731
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1732 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
1733 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1734 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
1735 };
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1736
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1737
2167
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1738 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
1739 {
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1740 // 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
1741 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
1742 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
1743 {
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1744 int score = DM_PROBE_SCORE_MAYBE;
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1745 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
1746 {
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1747 if (memcmp(buf->data + 2 + (nbank * 0x0400) + 0x03f8,
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1748 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
1749 score += DM_PROBE_SCORE_GOOD;
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1750 }
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1751 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
1752 }
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1753
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1754 // Packed variant
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1755 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
1756 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
1757 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
1758 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
1759
2167
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1760 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
1761 }
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1762
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1763
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1764 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
1765 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1766 int res;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1767 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
1768 DMCompParams cfg;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1769
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1770 // 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
1771 // 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
1772 // 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
1773 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
1774 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
1775 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
1776 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
1777
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1778 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
1779 &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
1780 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1781 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
1782 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
1783 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
1784
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1785 // 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
1786 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
1787 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1788 res = dmError(DMERR_INVALID_DATA,
2389
647671a9a0b8 More printf() format specifier size_t -related fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2378
diff changeset
1789 "%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
1790 " 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
1791 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
1792 goto out;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1793 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1794
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1795 // 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
1796 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
1797 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1798 res = dmError(DMERR_MALLOC,
2389
647671a9a0b8 More printf() format specifier size_t -related fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2378
diff changeset
1799 "%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
1800 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
1801 goto out;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1802 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1803
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1804 // 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
1805 // 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
1806 //
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1807 // 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
1808 // 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
1809 // 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
1810 // 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
1811 // 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
1812 //
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1813
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1814 // 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
1815 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
1816 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
1817 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
1818 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
1819
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1820 // 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
1821 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
1822 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1823 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
1824
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1825 // 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
1826 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
1827
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1828 // 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
1829 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
1830 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1831
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1832 // 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
1833 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
1834 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1835 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
1836 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
1837
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1838 // 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
1839 // 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
1840 // 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
1841 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
1842 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
1843 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
1844
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1845 // 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
1846 // 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
1847 // 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
1848 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
1849 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
1850
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1851 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
1852 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1853 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
1854 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
1855 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1856
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1857 // 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
1858 // 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
1859 // next bank, etc.
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1860 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
1861 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
1862
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1863 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
1864 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1865 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
1866 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
1867 }
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
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1870 // 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
1871 // 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
1872 // 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
1873 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
1874 {
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1875 const int yd = yc % D64_SPR_HEIGHT_PX;
2190
0447f4c6c32b Fix a const discard issue.
Matti Hamalainen <ccr@tnsp.org>
parents: 2189
diff changeset
1876 const Uint8 *sprPtrs = fmtCrestSHFLI_Sprite_pointers[yc % 8];
0447f4c6c32b Fix a const discard issue.
Matti Hamalainen <ccr@tnsp.org>
parents: 2189
diff changeset
1877 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
1878
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1879 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
1880 sp1 = mem.data + DM_CREST_SHFLI_IMG_WIDTH * yc;
2191
488130151097 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2190
diff changeset
1881 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
1882
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1883 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
1884 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1885 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
1886 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
1887 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
1888
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1889 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
1890 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
1891 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
1892 }
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
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1895 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
1896 dmFree(dstBuf);
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1897 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1898
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1899 out:
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1900 dmGrowBufFree(&mem);
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 return res;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1903 }
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
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1906 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
1907 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
1908 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
1909 {
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1910 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
1911
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1912 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
1913 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
1914
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1915 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
1916 {
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1917 *(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
1918 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
1919 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1920
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1921 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
1922 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1923
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1924
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1925 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
1926 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
1927 {
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1928 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
1929 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
1930 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
1931 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
1932 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
1933
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1934 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
1935 {
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1936 *(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
1937 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
1938 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1939
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1940 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
1941 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
1942 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
1943 {
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1944 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
1945 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
1946 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
1947 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
1948 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
1949 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
1950 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
1951
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1952 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
1953 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
1954 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
1955
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1956 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
1957 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
1958 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
1959
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1960 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
1961 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
1962 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
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
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1965 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
1966 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
1967
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 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
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
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
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1972 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
1973 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
1974 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1975 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
1976 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
1977 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
1978
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1979 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
1980 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
1981
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1982 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
1983 bmoffs, scroffs,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1984 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
1985 0, vbank, bgcol);
1876
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
1986 }
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
1987
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
1988
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1989 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
1990 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
1991 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1992 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1993
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
1994 return dmC64GetGenericSCPixel(scan->col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1995 bmoffs, scroffs,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1996 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
1997 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1998
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1999
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
2000 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
2001 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
2002 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
2003 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
2004 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
2005 Uint8 color1, color2;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
2006 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
2007
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
2008 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
2009 (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
2010 return res;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
2011
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2331
diff changeset
2012 *(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
2013 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
2014 }
183d503b17a7 Implement support for hires FLI interlaced "ECI Graphic Editor 1.0 (unpacked)" format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1731
diff changeset
2015
183d503b17a7 Implement support for hires FLI interlaced "ECI Graphic Editor 1.0 (unpacked)" format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1731
diff changeset
2016
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
2017 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
2018 {
2168
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2019 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
2020
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2021 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
2022 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
2023 {
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2024 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
2025
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2026 // 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
2027 // 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
2028 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
2029 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
2030
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2031 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
2032 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
2033 else
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2034 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
2035 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
2036 else
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2037 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
2038 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
2039 }
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2040
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2041 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
2042 buf->len == 16386 ||
1979
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2043 // Face Painter
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2044 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
2045 score /= 3;
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2046
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
2047 return score;
1739
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2048 }
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2049
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2050
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2051 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
2052 {
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2053 int res;
2170
7c4c9013e412 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2169
diff changeset
2054 DMGrowBuf mem, tmp;
1739
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2055 DMCompParams cfg;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2056
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2057 cfg.func = fmt->name;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2058 cfg.type = DM_COMP_RLE_MARKER;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2059 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
2060 cfg.rleMarkerB = buf->data[0];
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2061
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2062 if ((res = dmDecodeGenericRLEAlloc(
1747
5e928618fdc8 Change DMGrowBuf API somewhat and implement more copy operations.
Matti Hamalainen <ccr@tnsp.org>
parents: 1746
diff changeset
2063 &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
2064 res = dmC64DecodeGenericBMP(img, &mem, fmt);
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2065
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2066 dmGrowBufFree(&mem);
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2067 return res;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2068 }
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2069
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2070
1912
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2071 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
2072 {
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2073 int res;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2074 DMGrowBuf tmp;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2075 DMCompParams cfg;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2076
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2077 // 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
2078 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
2079 goto out;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2080
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2081 // 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
2082 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
2083 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
2084 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
2085 cfg.rleMinCountB = 4;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2086 cfg.rleMaxCountB = 255;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2087
2331
6dc64deb6718 Missed on dmGenericRLEAnalyze() call from a previous commit.
Matti Hamalainen <ccr@tnsp.org>
parents: 2329
diff changeset
2088 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
2089 goto out;
1912
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2090
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2091 // 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
2092 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
2093 {
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2094 res = DMERR_MALLOC;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2095 goto out;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2096 }
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2097
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2098 // 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
2099 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
2100
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2101 out:
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2102 dmGrowBufFree(&tmp);
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2103 return res;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2104 }
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2105
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2106
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2107 //
1795
c8d690e8f9e9 Fix some typos in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1792
diff changeset
2108 // Helper macros for defining screen memory layouts
c8d690e8f9e9 Fix some typos in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1792
diff changeset
2109 // 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
2110 //
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
2111 #define DEF_REPEAT_BLOCK(dtype, start, oindex, bindex, osize, bsize, oflags) \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2112 { DO_COPY, (dtype), (start) + ((osize) * (oindex)), (bindex), (bsize), 0, NULL, NULL, (oflags) }
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2113
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2114 #define DEF_REPEAT_BLOCK_8(dtype, start, sindex, osize, bsize, oflags) \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2115 DEF_REPEAT_BLOCK((dtype), (start), 0, ((sindex) + 0), (osize), (bsize), (oflags)), \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2116 DEF_REPEAT_BLOCK((dtype), (start), 1, ((sindex) + 1), (osize), (bsize), (oflags)), \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2117 DEF_REPEAT_BLOCK((dtype), (start), 2, ((sindex) + 2), (osize), (bsize), (oflags)), \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2118 DEF_REPEAT_BLOCK((dtype), (start), 3, ((sindex) + 3), (osize), (bsize), (oflags)), \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2119 DEF_REPEAT_BLOCK((dtype), (start), 4, ((sindex) + 4), (osize), (bsize), (oflags)), \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2120 DEF_REPEAT_BLOCK((dtype), (start), 5, ((sindex) + 5), (osize), (bsize), (oflags)), \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2121 DEF_REPEAT_BLOCK((dtype), (start), 6, ((sindex) + 6), (osize), (bsize), (oflags)), \
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2122 DEF_REPEAT_BLOCK((dtype), (start), 7, ((sindex) + 7), (osize), (bsize), (oflags))
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2123
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2124
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2125 //
1861
752893fa6412 Update a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 1860
diff changeset
2126 // 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
2127 // 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
2128 // 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
2129 //
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2130 DMC64ImageCommonFormat dmC64CommonFormats[] =
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2131 {
1815
2b68b6955635 Rename "Koala Paint" to "Koala Painter".
Matti Hamalainen <ccr@tnsp.org>
parents: 1813
diff changeset
2132 { // #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
2133 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2134 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2135 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
2136 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
2137 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2138 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2139 {
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
2140 { 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
2141 { 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
2142 { 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
2143 { 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
2144 { 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
2145 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2146 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2147
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2148 { // #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
2149 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2150 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2151 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
2152 2, 1,
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2153 NULL, NULL,
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2154 fmtGetPixelBlackMailFLI,
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2155 {
2294
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2156 { DO_COPY , DS_EXTRA_DATA , 0x0000, 0, 200 , 0, NULL, NULL, DF_NORMAL },
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2157 { DO_COPY , DS_COLOR_RAM , 0x0100, 0, 0 , 0, NULL, NULL, DF_NORMAL },
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2158 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x0500, 0, 0x400, 0, DF_NORMAL),
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2159 { DO_COPY , DS_BITMAP_RAM , 0x2500, 0, 0 , 0, NULL, NULL, DF_NORMAL },
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2160
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
2161 { 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
2162 { 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
2163 }
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2164 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2165
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2166 { // #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
2167 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2168 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2169 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
2170 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
2171 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2172 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2173 {
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
2174 { 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
2175 { 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
2176 { 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
2177 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2178 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2179
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2180 { // #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
2181 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
2182 D64_SCR_WIDTH, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2183 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
2184 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
2185 NULL, NULL,
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2186 fmtGetPixelFunPaint2,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2187 {
2224
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2188 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x0000, 0, 0x400, 0, DF_NORMAL),
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2189 { 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
2190 { 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
2191 { DO_COPY , DS_COLOR_RAM , 0x4000, 0, 0 , 0, NULL, NULL, DF_NORMAL },
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2192 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x43e8, 8, 0x400, 0, DF_NORMAL),
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
2193 { 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
2194 { 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
2195 { 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
2196 { 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
2197 { 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
2198 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2199 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2200
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2201 { // #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
2202 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2203 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2204 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
2205 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
2206 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2207 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2208 {
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
2209 { 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
2210 { 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
2211 { 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
2212 { 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
2213 { 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
2214 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2215 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2216
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2217 { // #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
2218 D64_FMT_MC | D64_FMT_ILACE,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2219 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2220 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
2221 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
2222 NULL, NULL,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
2223 fmtGetPixelDrazLace,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2224 {
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
2225 { 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
2226 { 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
2227 { 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
2228 { 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
2229 { 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
2230 { 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
2231 { 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
2232 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2233 },
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2234
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2235 { // #6: TruePaint
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2236 D64_FMT_MC | D64_FMT_ILACE,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2237 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2238 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
2239 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
2240 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2241 fmtGetPixelTruePaint,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2242 {
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
2243 { 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
2244 { 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
2245 { 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
2246 { 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
2247 { 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
2248 { 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
2249 { 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
2250 { 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
2251 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2252 },
1739
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
2253
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2254 { // #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
2255 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
2256 D64_SCR_WIDTH, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2257 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2258 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
2259 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
2260 fmtGetPixelECI,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2261 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2262 { DO_COPY , DS_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
2263 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x2000, 0, 0x400, 0, DF_NORMAL),
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2264 { DO_COPY , DS_BITMAP_RAM , 0x4000, 1, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2265 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x6000, 8, 0x400, 0, DF_NORMAL),
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2266 { 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
2267 { 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
2268 { 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
2269 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2270 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2271
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2272 { // #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
2273 D64_FMT_HIRES | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2274 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
2275 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
2276 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
2277 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2278 fmtGetPixelCrestHIFLIorCDHM,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2279 {
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
2280 { 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
2281 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x2000, 0, 0x400, 0, DF_NORMAL),
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2282 { 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
2283 { 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
2284 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2285 },
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
2286
2018
1c45b2fb471d Adjust a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 2015
diff changeset
2287 { // #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
2288 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2289 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2290 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
2291 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
2292 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
2293 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
2294 {
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
2295 { 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
2296 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x0400, 0, 0x400, 0, DF_NORMAL),
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2297 { DO_COPY , DS_BITMAP_RAM , 0x2400, 0, 0, 0, NULL, NULL, DF_NORMAL },
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
2298 { 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
2299 { 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
2300 }
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
2301 },
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2302
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2303 { // #10: Doodle
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2304 D64_FMT_HIRES,
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,
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2308 NULL, NULL,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2309 NULL,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
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_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
2312 { 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
2313 { 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
2314 }
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2315 },
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2316
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2317 { // #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
2318 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
2319 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
2320 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
2321 1, 1,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2322 NULL, NULL,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2323 fmtGetPixelCrestSHFLI,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2324 {
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
2325 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x0000, 0 , 0x0400, 0x0400, DF_NORMAL),
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2326 DEF_REPEAT_BLOCK_8(DS_EXTRA_DATA, 0x03f8, 0 , 0x0400, 8, DF_DECODE), // Sprite pointers for each bank
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2327 { 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
2328 { 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
2329 { 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
2330 { 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
2331 { 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
2332 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2333 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2334 };
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2335
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2336
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2337 //
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2338 // 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
2339 //
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2340 DMC64ImageFormat dmC64ImageFormats[] =
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2341 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2342 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2343 "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
2344 fmtProbeDrazPaint20Packed,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2345 fmtDecodeDrazPaintPacked, fmtEncodeDrazPaintPacked,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2346 { }, &dmC64CommonFormats[4]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2347 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2348
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2349 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2350 "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
2351 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2352 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
2353 { }, &dmC64CommonFormats[4]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2354 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2355
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2356 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2357 "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
2358 fmtProbeDrazLace10Packed,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2359 fmtDecodeDrazPaintPacked, fmtEncodeDrazPaintPacked,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2360 { }, &dmC64CommonFormats[5]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2361 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2362
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2363 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2364 "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
2365 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2366 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
2367 { }, &dmC64CommonFormats[5]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2368 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2369
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2370 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2371 "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
2372 fmtProbeBDP5Packed,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2373 fmtDecodeBDP5Packed, fmtEncodeBDP5Packed,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2374 { }, &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
2375 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2376
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2377 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2378 "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
2379 NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2380 NULL, NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2381 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2382 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2383 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2384 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
2385 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
2386 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2387 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2388 {
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
2389 { 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
2390 { 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
2391 { 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
2392 { 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
2393 { 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
2394 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2395 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2396 NULL
1574
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2397 },
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2398
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2399 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2400 "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
2401 NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2402 NULL, NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2403 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2404 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2405 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2406 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
2407 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
2408 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2409 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2410 {
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
2411 { 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
2412 { 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
2413 { 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
2414 { 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
2415 { 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
2416 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2417 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2418 NULL
1574
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2419 },
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2420
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2421 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2422 "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
2423 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2424 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
2425 { }, &dmC64CommonFormats[6]
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2426 },
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2427
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2428 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2429 "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
2430 fmtProbeTruePaintPacked,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2431 fmtDecodeTruePaintPacked, NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2432 { }, &dmC64CommonFormats[6]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2433 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2434
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2435 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2436 "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
2437 fmtProbeKoalaPainter,
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2438 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
2439 { }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2440 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2441
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2442 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2443 "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
2444 fmtProbeKoalaPainterPacked,
1839
666b27999570 As the Koala Painter plain RLE compression (without headers and static
Matti Hamalainen <ccr@tnsp.org>
parents: 1838
diff changeset
2445 fmtDecodeStaticRLEMarkerMode2, fmtEncodeStaticRLEMarkerMode2,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2446 { }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2447 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2448
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2449 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2450 "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
2451 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2452 NULL, NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2453 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2454 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2455 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2456 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
2457 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
2458 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2459 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2460 {
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
2461 { 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
2462 { 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
2463 { 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
2464 { 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
2465 { 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
2466 { 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
2467 },
1593
a77876a07425 Oops, missed this from the last commit.
Matti Hamalainen <ccr@tnsp.org>
parents: 1592
diff changeset
2468 },
a77876a07425 Oops, missed this from the last commit.
Matti Hamalainen <ccr@tnsp.org>
parents: 1592
diff changeset
2469 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2470 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2471
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2472 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2473 "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
2474 NULL,
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2475 NULL, NULL,
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2476 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2477 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2478 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2479 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
2480 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
2481 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2482 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2483 {
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
2484 { 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
2485 { 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
2486 { 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
2487 { 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
2488 { 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
2489 }
1755
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2490 },
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2491 NULL
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2492 },
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2493
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2494 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2495 "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
2496 fmtProbeMicroIllustrator,
1758
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2497 NULL, NULL,
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2498 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2499 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2500 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2501 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
2502 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
2503 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2504 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2505 {
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
2506 { 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
2507 { 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
2508 { 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
2509 // 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
2510 { 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
2511 { 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
2512 { 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
2513 { 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
2514 { 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
2515 { 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
2516 { 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
2517 }
1758
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2518 },
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2519 NULL
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2520 },
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2521
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2522 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2523 "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
2524 NULL,
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2525 NULL, NULL,
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2526 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2527 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2528 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2529 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
2530 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
2531 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2532 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2533 {
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
2534 { 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
2535 { 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
2536 { 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
2537 { 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
2538 { 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
2539 }
1754
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2540 },
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2541 NULL
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2542 },
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2543
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2544 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2545 "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
2546 NULL,
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2547 NULL, NULL,
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2548 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2549 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2550 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2551 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
2552 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
2553 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2554 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2555 {
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
2556 { 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
2557 { 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
2558 { 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
2559 // 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
2560 { 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
2561 { 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
2562 }
1763
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2563 },
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2564 NULL
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2565 },
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2566
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2567 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2568 "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
2569 fmtProbeSaracenPaint,
1769
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2570 NULL, NULL,
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2571 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2572 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2573 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2574 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
2575 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
2576 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2577 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2578 {
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
2579 { 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
2580 { 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
2581 { 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
2582 { 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
2583 { 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
2584 }
1769
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2585 },
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2586 NULL
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2587 },
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2588
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2589 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2590 "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
2591 NULL,
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2592 NULL, NULL,
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2593 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2594 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2595 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2596 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
2597 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
2598 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2599 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2600 {
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
2601 { 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
2602 // 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
2603 { 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
2604 { 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
2605 { 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
2606 { 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
2607 { 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
2608 }
1770
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2609 },
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2610 NULL
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2611 },
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2612
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2613 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2614 "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
2615 NULL,
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2616 NULL, NULL,
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2617 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2618 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2619 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2620 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
2621 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
2622 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2623 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2624 {
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
2625 { 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
2626 { 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
2627 { 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
2628 { 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
2629 { 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
2630 { 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
2631 }
1762
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2632 },
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2633 NULL
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2634 },
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2635
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2636 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2637 "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
2638 NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2639 NULL, NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2640 {
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2641 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2642 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2643 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
2644 2, 1,
1779
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2645 NULL, NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2646 NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2647 {
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
2648 { 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
2649 { 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
2650 { 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
2651 { 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
2652 { 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
2653 { 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
2654 }
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2655 },
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2656 NULL
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2657 },
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2658
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2659 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2660 "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
2661 fmtProbeAmicaPaintPacked,
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
2662 fmtDecodeAmicaPaintPacked, fmtEncodeAmicaPaintPacked,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2663 { }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2664 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2665
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2666 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2667 "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
2668 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2669 NULL, NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2670 { }, &dmC64CommonFormats[0]
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2671 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2672
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2673 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2674 "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
2675 NULL,
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2676 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
2677 { }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2678 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2679
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2680 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2681 "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
2682 fmtProbeArtStudio,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2683 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
2684 { }, &dmC64CommonFormats[2]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2685 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2686
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2687 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2688 "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
2689 NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2690 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2691 { }, &dmC64CommonFormats[2]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2692 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2693
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2694 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2695 "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
2696 fmtProbeDoodle,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2697 NULL, NULL,
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2698 { }, &dmC64CommonFormats[10]
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2699 },
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2700
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2701 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2702 "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
2703 fmtProbeDoodle,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2704 fmtDecodeStaticRLEMarkerMode2, fmtEncodeStaticRLEMarkerMode2,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2705 { }, &dmC64CommonFormats[10]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2706 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2707
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
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 "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
2710 NULL,
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2711 NULL, NULL,
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2712 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2713 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2714 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2715 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
2716 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
2717 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2718 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2719 {
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
2720 { 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
2721 { 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
2722 // 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
2723 { 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
2724 }
1670
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2725 },
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2726 NULL
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2727 },
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2728
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
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 "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
2731 NULL,
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2732 NULL, NULL,
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2733 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2734 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2735 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2736 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
2737 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
2738 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2739 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2740 {
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
2741 { 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
2742 { 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
2743 { 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
2744 }
1671
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2745 },
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2746 NULL
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2747 },
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2748
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2749 {
2537
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2750 "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
2751 fmtProbeGigapaintHires,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2752 NULL, NULL,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2753 {
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2754 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2755 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2756 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
2757 1, 1,
1915
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2758 NULL, NULL,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2759 NULL,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2760 {
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
2761 { 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
2762 { 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
2763 { 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
2764 }
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2765 },
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2766 NULL
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2767 },
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2768
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2769 {
2537
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2770 "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
2771 fmtProbeGigapaintHires,
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2772 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
2773 {
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2774 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
2775 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
2776 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
2777 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
2778 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
2779 NULL,
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2780 {
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2781 { 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
2782 { 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
2783 { 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
2784 }
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2785 },
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2786 NULL
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2787 },
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2788
646641d72128 Add support for Giga-Paint hires format that includes screen RAM. Not sure
Matti Hamalainen <ccr@tnsp.org>
parents: 2535
diff changeset
2789 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2790 "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
2791 NULL,
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2792 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
2793 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2794 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2795 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT * 2,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2796 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
2797 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
2798 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2799 fmtGetPixelBFLI,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2800 {
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
2801 { DO_COPY , DS_COLOR_RAM , 0x0001, 0, 0x400 , 0, NULL, NULL, DF_NORMAL },
2307
319fd953ba29 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
2802 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x0401, 0, 0x400 , 0, DF_NORMAL),
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2803 { DO_COPY , DS_BITMAP_RAM , 0x2401, 0, 0x2000, 0, NULL, NULL, DF_NORMAL },
2307
319fd953ba29 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
2804 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x4401, 8, 0x400 , 0x400, DF_NORMAL),
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2805 { 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
2806 { 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
2807 { 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
2808 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2809 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2810 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
2811 },
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2812
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2813 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2814 "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
2815 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2816 NULL, NULL,
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2817 { }, &dmC64CommonFormats[1]
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2818 },
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2819
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2820 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2821 "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
2822 fmtProbeBlackMailFLIPacked,
1832
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
2823 fmtDecodeBlackMailFLIPacked, fmtEncodeBlackMailFLIPacked,
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2824 { }, &dmC64CommonFormats[1]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2825 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2826
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2827 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2828 "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
2829 NULL,
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2830 NULL, NULL,
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2831 { }, &dmC64CommonFormats[1]
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2832 },
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2833
28701abacc31 Add support for Dolphins FLI Editor v3.2 (unpacked), which is exactly(?)
Matti Hamalainen <ccr@tnsp.org>
parents: 2307
diff changeset
2834 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2835 "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
2836 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
2837 NULL, NULL,
1834
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2838 { }, &dmC64CommonFormats[9]
69871828838c Separate the format entries for "FBI Crew FLI Designer 1.1" and "FLI Designer 2"
Matti Hamalainen <ccr@tnsp.org>
parents: 1832
diff changeset
2839 },
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
2840
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
2841 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2842 "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
2843 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
2844 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
2845 { }, &dmC64CommonFormats[9]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2846 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2847
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2848 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2849 "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
2850 NULL,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2851 NULL, NULL,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2852 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2853 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
2854 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
2855 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
2856 2, 1,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2857 NULL, NULL,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2858 fmtGetPixelFlinterlazer,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2859 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2860 { 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
2861 { 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
2862
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2863 { DO_COPY , DS_BITMAP_RAM , 0x4000 - 0x284e, 0, 0 , 0, NULL, NULL, DF_NORMAL },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2864 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x6000 - 0x284e, 0, 0x400, 0, DF_NORMAL),
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2865
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2866 { DO_COPY , DS_BITMAP_RAM , 0x8000 - 0x284e, 1, 0 , 0, NULL, NULL, DF_NORMAL },
2300
a494e4a4b6bc Minor improvements to Flinterlazer support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2299
diff changeset
2867 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0xA000 - 0x284e, 8, 0x400, 0, DF_NORMAL),
2299
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2868
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2869 { 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
2870 { 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
2871 { 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
2872 { 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
2873 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2874 },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2875 NULL
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2876 },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2877
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2878 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2879 "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
2880 NULL,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2881 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
2882 { }, &dmC64CommonFormats[7]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2883 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2884
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2885 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2886 "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
2887 fmtProbeECIPacked,
1912
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2888 fmtDecodeECIPacked, fmtEncodeECIPacked,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2889 { }, &dmC64CommonFormats[7]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2890 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2891
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2892 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2893 "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
2894 NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2895 NULL, NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2896 { // 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
2897 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2898 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2899 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
2900 2, 1,
1979
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2901 NULL, NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2902 NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2903 {
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
2904 { 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
2905 { 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
2906 { 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
2907 { 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
2908 { 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
2909 { 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
2910 }
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2911 },
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2912 NULL
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2913 },
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2914
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2915 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2916 "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
2917 NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2918 NULL, NULL,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2919 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2920 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2921 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2922 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
2923 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
2924 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2925 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2926 {
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
2927 { 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
2928 { 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
2929 { 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
2930 { 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
2931 { 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
2932 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2933 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2934 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2935 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2936
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2937 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2938 "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
2939 fmtProbeFormatXX2,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2940 fmtDecodeFormatXX2, NULL,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2941 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2942 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
2943 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
2944 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
2945 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
2946 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2947 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2948 {
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
2949 { 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
2950 { 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
2951 { 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
2952 { 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
2953 { 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
2954 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2955 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2956 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2957 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2958
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2959 {
2541
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
2960 "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
2961 fmtProbeFormatXX3,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
2962 NULL, NULL,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
2963 {
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
2964 D64_FMT_MC,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
2965 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
2966 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
2967 2, 1,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
2968 NULL, NULL,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
2969 NULL,
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
2970 {
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
2971 { 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
2972 { 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
2973 { 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
2974 { 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
2975 { 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
2976 { 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
2977 },
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
2978 },
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
2979 NULL
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
2980 },
671f41166527 Reorder / rename Unknown format 3 to Format XX3.
Matti Hamalainen <ccr@tnsp.org>
parents: 2540
diff changeset
2981 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2982 "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
2983 fmtProbeFunPaint2,
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2984 fmtDecodeFunPaint2, fmtEncodeFunPaint2Unpacked,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2985 { }, &dmC64CommonFormats[3]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2986 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2987
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2988 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2989 "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
2990 fmtProbeFunPaint2,
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2991 fmtDecodeFunPaint2, fmtEncodeFunPaint2Packed,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2992 { }, &dmC64CommonFormats[3]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2993 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2994
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2995 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
2996 "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
2997 fmtProbeGunPaint,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2998 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2999 {
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3000 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
3001 D64_SCR_WIDTH, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
3002 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
3003 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
3004 NULL, NULL,
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
3005 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
3006 {
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
3007 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x0000, 0, 0x400, 0, DF_NORMAL),
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3008 { 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
3009 { 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
3010 { DO_COPY , DS_COLOR_RAM , 0x4000, 0, 0 , 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3011 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x4400, 8, 0x400, 0, DF_NORMAL),
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3012 { 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
3013 // 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
3014 // 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
3015 { 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
3016 { 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
3017 { 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
3018 { 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
3019 { 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
3020 }
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3021 },
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3022 NULL
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3023 },
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3024
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3025 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3026 "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
3027 NULL,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3028 NULL, NULL,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3029 {
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3030 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
3031 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
3032 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
3033 2, 1,
1876
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3034 NULL, NULL,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3035 fmtGetPixelHCB,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3036 {
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
3037 { 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
3038 { 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
3039 { 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
3040 { 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
3041 { 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
3042 { 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
3043 { 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
3044 { 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
3045 }
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3046 },
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3047 NULL
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3048 },
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3049
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
3050 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3051 "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
3052 NULL,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3053 NULL, NULL,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3054 {
2314
87533af8db64 Add format flag for formats that use sprite layer.
Matti Hamalainen <ccr@tnsp.org>
parents: 2313
diff changeset
3055 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
3056 192, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
3057 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
3058 2, 1,
1805
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3059 NULL, NULL,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3060 fmtGetPixelPentelPaint,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
3061 {
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
3062 { 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
3063 { 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
3064 { 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
3065 { 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
3066 { 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
3067 { 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
3068 { 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
3069 { 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
3070 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3071 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3072 NULL
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3073 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3074
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3075 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3076 "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
3077 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3078 NULL, NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3079 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3080 D64_FMT_HIRES | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
3081 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
3082 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
3083 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
3084 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3085 fmtGetPixelCrestHIFLIorCDHM,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
3086 {
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
3087 { 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
3088 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x2000, 0, 0x400, 0, DF_NORMAL),
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
3089 { 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
3090 { 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
3091 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
3092 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
3093 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3094 },
1803
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
3095
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
3096 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3097 "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
3098 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
3099 NULL, NULL,
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
3100 { }, &dmC64CommonFormats[11]
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
3101 },
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
3102
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
3103 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3104 "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
3105 fmtProbeCrestSHFLI,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
3106 fmtDecodeCrestSHFLIPacked, NULL,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
3107 { }, &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
3108 },
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
3109
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
3110 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3111 "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
3112 fmtProbeCosmosDesignsHiresManager,
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
3113 NULL, NULL,
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
3114 { }, &dmC64CommonFormats[8]
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
3115 },
2138
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
3116
2130
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
3117 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3118 "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
3119 fmtProbeCosmosDesignsHiresManager,
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
3120 fmtDecodeCosmosDesignsHiresManagerPacked, NULL,
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
3121 { }, &dmC64CommonFormats[8]
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
3122 },
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
3123
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
3124 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3125 "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
3126 fmtProbeMarqPETSCII,
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
3127 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
3128 {
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
3129 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
3130 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
3131 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
3132 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
3133 NULL, NULL,
2172
de88333acc44 Move the PETSCII getpixel function to lib64gfx.c and remove the
Matti Hamalainen <ccr@tnsp.org>
parents: 2170
diff changeset
3134 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
3135 {
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
3136 // 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
3137 { 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
3138 { 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
3139 { 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
3140 { 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
3141 { 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
3142 { 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
3143
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3144 { 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
3145 }
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
3146 },
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
3147 NULL
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
3148 },
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
3149
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3150 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3151 "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
3152 NULL,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3153 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
3154 {
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3155 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
3156 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
3157 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
3158 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
3159 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
3160 NULL,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3161 {
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
3162 { 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
3163 { 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
3164
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
3165 { 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
3166 { 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
3167 { 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
3168
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3169 { 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
3170 }
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3171 },
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3172 NULL
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3173 },
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3174
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
3175 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3176 "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
3177 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
3178 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
3179 {
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
3180 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
3181 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
3182 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
3183 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
3184 NULL, NULL,
2172
de88333acc44 Move the PETSCII getpixel function to lib64gfx.c and remove the
Matti Hamalainen <ccr@tnsp.org>
parents: 2170
diff changeset
3185 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
3186 {
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
3187 { 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
3188 { 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
3189
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3190 { 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
3191 { 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
3192 { 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
3193
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
3194 { 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
3195 }
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3196 },
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
3197 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
3198 },
2362
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3199
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3200 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3201 "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
3202 fmtProbeCocaPETSCII,
2362
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3203 NULL, NULL,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3204 {
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3205 D64_FMT_HIRES | D64_FMT_CHAR,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3206 D64_SCR_WIDTH , D64_SCR_HEIGHT,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3207 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
3208 1, 1,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3209 NULL, NULL,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3210 NULL,
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3211 {
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
3212 { 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
3213 { 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
3214 { 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
3215
2362
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3216 { 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
3217 { 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
3218 { 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
3219
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3220 { 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
3221 }
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3222 },
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3223 NULL
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3224 },
6119b9b560fb Add support for Petscii Coca (Cola) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
3225
2399
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3226 {
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2519
diff changeset
3227 "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
3228 NULL,
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3229 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
3230 {
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3231 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
3232 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
3233 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
3234 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
3235 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
3236 NULL,
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3237 {
2428
09082816665d Fix write support of Abyss Connection PETSCII-Editor 4.61 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2399
diff changeset
3238 { 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
3239 { 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
3240 { 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
3241
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3242 { 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
3243 { 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
3244 { 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
3245
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3246 { 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
3247 }
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3248 },
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3249 NULL
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3250 },
5d391c31ebc9 Add support for Abyss Connection PETSCII-Editor 4.61 (unpacked) raw file format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2389
diff changeset
3251
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3252 {
2525
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
3253 "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
3254 fmtProbeSupeRes,
2525
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
3255 fmtDecodeSupeRes,fmtEncodeSupeRes,
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3256 { }, &dmC64CommonFormats[10]
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3257 },
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3258
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3259 {
2525
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
3260 "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
3261 fmtProbeSupeRes,
2525
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
3262 fmtDecodeSupeRes,fmtEncodeSupeRes,
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3263 { }, &dmC64CommonFormats[10]
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3264 },
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3265
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3266 {
2525
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
3267 "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
3268 fmtProbeSupeRes,
2525
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
3269 fmtDecodeSupeRes,fmtEncodeSupeRes,
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3270 { }, &dmC64CommonFormats[0]
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3271 },
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3272
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3273 {
2525
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
3274 "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
3275 fmtProbeSupeRes,
2525
19b0ca169361 Implement SupeRes encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2524
diff changeset
3276 fmtDecodeSupeRes,fmtEncodeSupeRes,
2519
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3277 { }, &dmC64CommonFormats[0]
4dbb6572622d Add preliminary decoder for SupeRes hires and multicolor files. The decoder
Matti Hamalainen <ccr@tnsp.org>
parents: 2428
diff changeset
3278 },
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
3279
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
3280
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3281 };
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3282
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3283 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
3284