annotate tools/lib64fmts.c @ 2300:a494e4a4b6bc

Minor improvements to Flinterlazer support.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 04 Jul 2019 11:40:17 +0300
parents ad019d930401
children d71185584d95
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
2120
88d37ec1b4d6 Bump copyright years.
Matti Hamalainen <ccr@tnsp.org>
parents: 2114
diff changeset
5 * (C) Copyright 2012-2019 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
1915
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
14 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
15 {
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
16 if (buf->len == fmt->size &&
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
17 dmCompareAddr16(buf, 0, fmt->addr))
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
18 return DM_PROBE_SCORE_MAX;
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
19
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
20 return DM_PROBE_SCORE_FALSE;
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
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
23
1983
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
24 // 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
25 // 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
26 // 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
27 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
28 {
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
29 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
30 };
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
31
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
32 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
33 {
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
34 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
35 };
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
36
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
37 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
38 {
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
39 if (buf->len == fmt->size &&
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
40 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
41 &&
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
42 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
43 )
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
44 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
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_FALSE;
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
214c7bd8692f Rename "MIL" to "Micro Illustrator" and improve probing of that format, at
Matti Hamalainen <ccr@tnsp.org>
parents: 1982
diff changeset
49
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
50 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
51 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
52 {
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
53 (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
54 (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
55 (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
56
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
57 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
58 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
59
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
60 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
61 }
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
62
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
63
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
64 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
65 {
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
66 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
67 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
68 };
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
69
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
70 static const Uint8 fmtMarqPETSCII_ID2[] =
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
71 {
2287
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
72 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
73 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
74 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
75 };
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
76
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
77 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
78 {
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
79 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
80 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
81 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
82 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
83 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
84 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
85 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
86 };
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
87
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
88
2130
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
89 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
90 {
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
91 (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
92
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
93 if (buf->len == 2098 &&
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
94 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
95 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
96 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
97 )
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
98 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
99
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
100 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
101 }
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
102
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
103
2287
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
104 static int fmtGetMarqPETSCIIData(const DMC64EncDecOp *op, DMC64Image *img,
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
105 const DMGrowBuf *buf, const DMC64ImageCommonFormat *fmt)
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
106 {
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
107 (void) op;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
108 (void) buf;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
109 (void) fmt;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
110
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
111 switch (img->extraData[0].data[0])
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
112 {
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
113 case 20: img->extraInfo[D64_EI_CHAR_CASE] = 0; break; // upper case
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
114 case 23: img->extraInfo[D64_EI_CHAR_CASE] = 1; break; // lower case
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
115 default:
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
116 return DMERR_INVALID_DATA;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
117 }
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
118
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
119 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
120 img->extraInfo[D64_EI_CHAR_CUSTOM] = 0;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
121
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
122 return DMERR_OK;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
123 }
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
124
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
125
2287
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
126 static int fmtSetMarqPETSCIIData(const DMC64EncDecOp *op, DMGrowBuf *buf,
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
127 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
128 {
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
129 (void) op;
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
130 (void) img;
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
131 (void) fmt;
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
132 Uint8 val;
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
133
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
134 switch (img->extraInfo[D64_EI_CHAR_CASE])
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
135 {
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
136 case 0: val = 20; break;
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
137 case 1: val = 23; break;
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
138 default: return DMERR_INVALID_DATA;
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
139 }
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
140
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
141 img->extraData[0].data[0] = val;
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
142
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
143 memcpy(buf->data,
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
144 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
145
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
146 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
147 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
148
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
149 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
150 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
151
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
152 return DMERR_OK;
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
153 }
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
154
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
155
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
156 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
157 {
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
158 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
159 0x31, 0x00, 0x00, 0x00, 0xA9,
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
160 };
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
161
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
162 static const Uint8 fmtPetsciiKrisszHu_ID2[] =
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
163 {
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
164 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
165 };
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
166
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
167
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
168 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
169 {
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
170 (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
171
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
172 if (buf->len == 10193 &&
2138
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
173 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
174 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
175 )
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
176 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
177
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
178 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
179 }
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
180
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
181
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
182 static int fmtSetPetsciiKrisszHuData(const DMC64EncDecOp *op, DMC64Image *img,
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
183 const DMGrowBuf *buf, const DMC64ImageCommonFormat *fmt)
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
184 {
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
185 (void) op;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
186 (void) buf;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
187 (void) fmt;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
188
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
189 const Uint8 *data = img->extraData[0].data;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
190 switch (data[0x0028 - 2])
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
191 {
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
192 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
193 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
194 img->d020 = data[0x001e - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
195 img->bgcolor = data[0x0023 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
196 break;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
197
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
198 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
199 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
200 img->d020 = data[0x001e - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
201 img->bgcolor = data[0x0023 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
202 img->d022 = data[0x002d - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
203 img->d023 = data[0x0032 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
204 break;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
205
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
206 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
207 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
208 img->d020 = data[0x001e - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
209 img->bgcolor = data[0x0023 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
210 img->d022 = data[0x0028 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
211 img->d023 = data[0x002d - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
212 img->d024 = data[0x0032 - 2];
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
213 break;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
214
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
215 default:
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
216 return DMERR_INVALID_DATA;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
217 }
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
218
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
219 // 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
220 // 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
221 // 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
222 // implement a hash-based detection at some point.
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
223 img->extraInfo[D64_EI_CHAR_CASE] = 0;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
224 img->extraInfo[D64_EI_CHAR_CUSTOM] = 1;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
225
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
226 return DMERR_OK;
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
227 }
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
228
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
229
2173
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
230 static int fmtSetSPETSCIIData(const DMC64EncDecOp *op, DMC64Image *img,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
231 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
232 {
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
233 (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
234 (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
235 (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
236
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
237 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
238 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
239
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
240 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
241 }
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
242
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
243
2015
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
244 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
245 {
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
246 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
247
2112
9dc2976e9fa3 Improve probing of packed and unpacked Koala files. Many converters and
Matti Hamalainen <ccr@tnsp.org>
parents: 2080
diff changeset
248 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
249 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
250 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
251
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
252 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
253 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
254
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
255 return score;
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
256 }
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
257
c5a88bb4ee3f Improve unpacked Koala Painter format support for variants that have a
Matti Hamalainen <ccr@tnsp.org>
parents: 2014
diff changeset
258
1815
2b68b6955635 Rename "Koala Paint" to "Koala Painter".
Matti Hamalainen <ccr@tnsp.org>
parents: 1813
diff changeset
259 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
260 {
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
261 // 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
262 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
263 buf->len < 10002 &&
1594
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
264 dmCompareAddr16(buf, 0, fmt->addr))
1771
c261db6e39aa Adjust some probe scores.
Matti Hamalainen <ccr@tnsp.org>
parents: 1770
diff changeset
265 return DM_PROBE_SCORE_GOOD;
1594
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
266
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
267 return DM_PROBE_SCORE_FALSE;
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
268 }
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
269
afb49736615a Implement packed Koala Painter probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1593
diff changeset
270
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
271 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
272 {
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
273 if (buf->len > 32 &&
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
274 (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
275 {
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
276 // Packed variant
1841
fc4841460fad Attempt to avoid misprobes of "Rainbow Painter (unpacked)" as packed Doodle files.
Matti Hamalainen <ccr@tnsp.org>
parents: 1840
diff changeset
277 if (fmt->size == 0xfe &&
fc4841460fad Attempt to avoid misprobes of "Rainbow Painter (unpacked)" as packed Doodle files.
Matti Hamalainen <ccr@tnsp.org>
parents: 1840
diff changeset
278 buf->len != fmt->size &&
fc4841460fad Attempt to avoid misprobes of "Rainbow Painter (unpacked)" as packed Doodle files.
Matti Hamalainen <ccr@tnsp.org>
parents: 1840
diff changeset
279 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
280 return DM_PROBE_SCORE_MAX;
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
281
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
282 // Unpacked variant
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
283 if (fmt->size != 0xfe && buf->len == fmt->size)
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
284 return DM_PROBE_SCORE_MAX;
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
285 }
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
286
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
287 return DM_PROBE_SCORE_FALSE;
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
288 }
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
289
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
290
2161
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
291 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
292 {
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
293 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
294 dmCompareAddr16(buf, 0, 0x2000))
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
295 return DM_PROBE_SCORE_MAX;
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
296
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
297 return DM_PROBE_SCORE_FALSE;
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
298 }
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
299
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
300
1839
666b27999570 As the Koala Painter plain RLE compression (without headers and static
Matti Hamalainen <ccr@tnsp.org>
parents: 1838
diff changeset
301 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
302 {
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
303 int res;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
304 DMGrowBuf mem;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
305 DMCompParams cfg;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
306
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
307 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
308 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
309 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_2;
1839
666b27999570 As the Koala Painter plain RLE compression (without headers and static
Matti Hamalainen <ccr@tnsp.org>
parents: 1838
diff changeset
310 cfg.rleMarkerB = fmt->size;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
311
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
312 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
313 goto out;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
314
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
315 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
316
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
317 out:
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
318 dmGrowBufFree(&mem);
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
319 return res;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
320 }
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
321
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
322
1839
666b27999570 As the Koala Painter plain RLE compression (without headers and static
Matti Hamalainen <ccr@tnsp.org>
parents: 1838
diff changeset
323 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
324 {
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
325 int res;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
326 DMGrowBuf tmp;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
327 DMCompParams cfg;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
328
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
329 // 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
330 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
331 goto out;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
332
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
333 // 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
334 cfg.func = fmt->name;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
335 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
336 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_2;
1839
666b27999570 As the Koala Painter plain RLE compression (without headers and static
Matti Hamalainen <ccr@tnsp.org>
parents: 1838
diff changeset
337 cfg.rleMarkerB = fmt->size;
1855
5e33f367bafe Adjust the minimum byte run RLE counts from 3 to 4.
Matti Hamalainen <ccr@tnsp.org>
parents: 1854
diff changeset
338 cfg.rleMinCountB = 4;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
339 cfg.rleMaxCountB = 255;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
340 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
341
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
342 out:
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
343 dmGrowBufFree(&tmp);
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
344 return res;
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
345 }
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
346
fb60abb09a65 Add support for packed Koala Painter files, though without probing now.
Matti Hamalainen <ccr@tnsp.org>
parents: 1577
diff changeset
347
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
348 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
349 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
350 const Uint8 *ident = buf->data + 2;
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
351 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
352 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
353 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
354 ident[11] == '.' && (
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
355 (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
356 (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
357 ))
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
358 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
359
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
360 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
361 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
362
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
363
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
364 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
365 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
366 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
367 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
368 DMCompParams cfg;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
369
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
370 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
371 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
372 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
373 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
374
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
375 if ((res = dmDecodeGenericRLEAlloc(&mem,
1747
5e928618fdc8 Change DMGrowBuf API somewhat and implement more copy operations.
Matti Hamalainen <ccr@tnsp.org>
parents: 1746
diff changeset
376 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
377 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
378
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
379 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
380
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
381 out:
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
382 dmGrowBufFree(&mem);
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
383 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
384 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
385
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
386
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
387 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
388 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
389 int res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
390 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
391 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
392 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
393
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
394 // 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
395 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
396 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
397
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
398 // 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
399 cfg.func = fmt->name;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
400 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
401 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
402 cfg.rleMinCountB = 4;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
403 cfg.rleMaxCountB = 255;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
404
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
405 dmGenericRLEAnalyze(&tmp, &cfg);
1661
dc3fbd130db7 RLE analyze was ran before setting up the compression config. Oops. Fixed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
406
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
407 // 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
408 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
409 !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
410 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
411 res = DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
412 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
413 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
414
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
415 // 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
416 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
417
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
418 out:
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
419 dmGrowBufFree(&tmp);
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
420 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
421 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
422
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
423
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
424 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
425 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
426 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
427 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
428 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
429 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
430
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
431 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
432 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
433
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
434
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
435 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
436 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
437 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
438 (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
439
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
440 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
441 return DMERR_OK;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
442 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
443
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
444
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
445 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
446 const DMC64Image *img, const DMC64ImageCommonFormat *fmt)
1535
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
447 {
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
448 (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
449 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
450 return DMERR_OK;
1535
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
451 }
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
452
2f7ff28ea56e Fix DrazLace encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1529
diff changeset
453
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
454 static int fmtGetPixelDrazLace(Uint8 *col,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
455 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
456 {
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
457 const int
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
458 x = rasterX / 8,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
459 y = rasterY / 8,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
460 yoffs = y * img->fmt->chWidth,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
461 bmoffs = yoffs * 8 + (rasterY & 7) + (x * 8),
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
462 scroffs = yoffs + x,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
463 vshift = 6 - (rasterX & 6);
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
464
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
465 return dmC64GetGenericMCPixel(col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
466 bmoffs, scroffs,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
467 vshift, 0,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
468 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
469 }
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
470
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
471
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
472 static const char *fmtBDP5_MagicID = "BDP 5.00";
1662
34d7c708649e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1661
diff changeset
473
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
474 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
475 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
476 if (buf->len > 20 &&
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
477 dmCompareAddr16(buf, 0, fmt->addr) &&
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
478 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
479 return DM_PROBE_SCORE_MAX;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
480
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
481 return DM_PROBE_SCORE_FALSE;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
482 }
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
483
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
484
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
485 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
486 {
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
487 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
488 DMGrowBuf mem, tmp;
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
489 DMCompParams cfg;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
490
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
491 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
492 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
493 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
494 cfg.rleMarkerB = buf->data[8];
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
495 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
496
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
497 // 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
498 // 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
499 // 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
500 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
501 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
502
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
503 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
504
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
505 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
506 goto out;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
507
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
508 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
509
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
510 out:
1792
905c09049fe6 Oops, forgot to free the buffer allocated in the BDP5 decoder. Fixed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1791
diff changeset
511 dmGrowBufFree(&tmp);
1651
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
512 dmGrowBufFree(&mem);
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
513 return res;
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
514 }
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
515
6dd191d04ea8 Implement support for Boogie Down Paint 5 (packed) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
516
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
517 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
518 {
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
519 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
520 DMGrowBuf mem;
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
521 DMCompParams cfg;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
522
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
523 // 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
524 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
525 goto out;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
526
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
527 // 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
528 cfg.func = fmt->name;
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
529 cfg.type = DM_COMP_RLE_MARKER;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
530 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
531 cfg.rleMinCountB = 4;
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
532 cfg.rleMaxCountB = 255;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
533 cfg.rleMinCountW = 256;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
534 cfg.rleMaxCountW = 1024;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
535
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
536 dmGenericRLEAnalyze(&mem, &cfg);
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
537
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
538 // Add the header bits
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
539 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
540 !dmGrowBufPutU8(buf, cfg.rleMarkerB) ||
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
541 !dmGrowBufPutU8(buf, cfg.rleMarkerW))
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
542 {
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
543 res = DMERR_MALLOC;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
544 goto out;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
545 }
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
546
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
547 // 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
548 res = dmEncodeGenericRLE(buf, &mem, &cfg);
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
549
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
550 out:
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
551 dmGrowBufFree(&mem);
1663
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
552 return res;
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
553 }
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
554
8ae32df3c184 Add support for BDP5 format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1662
diff changeset
555
2185
6ba6ca5632d2 Make GunPaint v1.1 writing more accurate.
Matti Hamalainen <ccr@tnsp.org>
parents: 2178
diff changeset
556 static const char *fmtGunPaint_MagicID = "GUNPAINT (JZ) ";
6ba6ca5632d2 Make GunPaint v1.1 writing more accurate.
Matti Hamalainen <ccr@tnsp.org>
parents: 2178
diff changeset
557 #define fmtGunPaint_MagicLen (16)
6ba6ca5632d2 Make GunPaint v1.1 writing more accurate.
Matti Hamalainen <ccr@tnsp.org>
parents: 2178
diff changeset
558 #define fmtGunPaint_MagicOffs (0x03e8)
1776
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
559
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
560 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
561 {
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
562 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
563 dmCompareAddr16(buf, 0, fmt->addr) &&
2166
4c3fdc9c0056 Clean up some variable and constant names.
Matti Hamalainen <ccr@tnsp.org>
parents: 2165
diff changeset
564 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
565 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
566
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
567 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
568 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
569
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
570
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
571 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
572 const DMC64Image *img, const DMC64ImageCommonFormat *fmt)
1776
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
573 {
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
574 (void) op;
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
575 (void) img;
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
576 (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
577
1946
c30dfd5e3227 Add a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 1941
diff changeset
578 // Here we assume that the op triggering this function is
c30dfd5e3227 Add a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 1941
diff changeset
579 // 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
580 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
581
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
582 return DMERR_OK;
1776
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
583 }
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
584
aa427e68e114 Theoretically fix Gun Paint format writing.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
585
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
586 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
587 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
588 size_t i, n;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
589
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
590 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
591 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
592
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
593 // 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
594 // as do some GunPaint images ..
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
595 if (buf->len == 9002 ||
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
596 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
597 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
598
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
599 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
600 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
601
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
602 if (n > 50)
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
603 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
604 if (n > 25)
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
605 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
606 if (n > 10)
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
607 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
608
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
609 return DM_PROBE_SCORE_FALSE;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
610 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
611
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
612
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
613 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
614 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
615 int res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
616 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
617 DMCompParams cfg;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
618
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
619 // 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
620 // 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
621 if (dmGrowBufCopy(&tmp, buf, 1) == NULL)
768fddda73e9 Convert fmtDecodeAmicaPaintPacked() to use the new DMGrowBuf functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1749
diff changeset
622 return DMERR_MALLOC;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
623
1751
768fddda73e9 Convert fmtDecodeAmicaPaintPacked() to use the new DMGrowBuf functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1749
diff changeset
624 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
625
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
626 // 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
627 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
628 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
629 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
630 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
631
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
632 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
633 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
634
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
635 // 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
636 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
637
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
638 out:
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
639 dmGrowBufFree(&tmp);
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
640 dmGrowBufFree(&mem);
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
641 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
642 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
643
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
644
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
645 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
646 {
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
647 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
648 DMGrowBuf mem;
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
649 DMCompParams cfg;
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
650
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
651 // 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
652 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
653 goto out;
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
654
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
655 // 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
656 cfg.func = fmt->name;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
657 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
658 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
659 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
660 cfg.rleMinCountB = 4;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
661 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
662
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
663 res = dmEncodeGenericRLE(buf, &mem, &cfg);
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
664
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
665 out:
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
666 dmGrowBufFree(&mem);
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
667 return res;
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
668 }
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
669
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
670
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
671 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
672 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
673 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
674 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
675 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
676
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
677 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
678 }
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
679
5d7c89ad0bb4 Improve Saracen Paint support by adding a probe function that accounts for
Matti Hamalainen <ccr@tnsp.org>
parents: 1771
diff changeset
680
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
681 static int fmtGetPixelFLIDesigner(Uint8 *col,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
682 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
683 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
684 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
685
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
686 return dmC64GetGenericMCPixel(col, img,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
687 bmoffs, scroffs,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
688 vshift, rasterY & 7,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
689 0, 0, img->bgcolor);
1806
dcb12cd340d3 Add missing Pentel Paint getpixel function.
Matti Hamalainen <ccr@tnsp.org>
parents: 1805
diff changeset
690 }
dcb12cd340d3 Add missing Pentel Paint getpixel function.
Matti Hamalainen <ccr@tnsp.org>
parents: 1805
diff changeset
691
dcb12cd340d3 Add missing Pentel Paint getpixel function.
Matti Hamalainen <ccr@tnsp.org>
parents: 1805
diff changeset
692
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
693 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
694 {
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
695 if (buf->len > 16 &&
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
696 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
697 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
698 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
699 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
700
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
701 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
702 }
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
703
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
704
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
705 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
706 {
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
707 int res;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
708 DMGrowBuf dst, src;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
709 DMCompParams cfg;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
710
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
711 cfg.func = fmt->name;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
712 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
713 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
714 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
715 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
716 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
717
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
718 // 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
719 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
720
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
721 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
722 goto out;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
723
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
724 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
725
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
726 out:
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
727 dmGrowBufFree(&dst);
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
728 return res;
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
729 }
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
730
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
731
1832
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
732 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
733 {
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
734 int res;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
735 DMGrowBuf tmp1, tmp2;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
736 DMCompParams cfg;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
737
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
738 dmGrowBufInit(&tmp1);
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
739 dmGrowBufInit(&tmp2);
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
740
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
741 // 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
742 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
743 goto out;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
744
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
745 // 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
746 cfg.func = fmt->name;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
747 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
748 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
749 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
750 cfg.rleMinCountB = 4;
1832
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
751 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
752
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
753 dmGenericRLEAnalyze(&tmp1, &cfg);
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
754
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
755 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
756 goto out;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
757
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
758 // 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
759 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
760 !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
761 !dmGrowBufPutU16LE(buf, 0x7f3f) ||
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
762 !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
763 {
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
764 res = DMERR_MALLOC;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
765 goto out;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
766 }
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
767
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
768 out:
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
769 dmGrowBufFree(&tmp1);
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
770 dmGrowBufFree(&tmp2);
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
771 return res;
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
772 }
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
773
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
774
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
775 static int fmtGetPixelBlackMailFLI(Uint8 *col,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
776 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
777 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
778 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
779
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
780 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
781 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
782
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
783 return dmC64GetGenericMCPixel(col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
784 bmoffs, scroffs,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
785 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
786 0, 0, bgcol);
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
787 }
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
789
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
790 static int fmtGetPixelTruePaint(Uint8 *col,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
791 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
792 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
793 const int
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
794 x = rasterX / 8,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
795 y = rasterY / 8,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
796 yoffs = y * img->fmt->chWidth,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
797 bmoffs = yoffs * 8 + (rasterY & 7) + (x * 8),
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
798 scroffs = yoffs + x,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
799 vshift = 6 - (rasterX & 6);
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
800
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
801 return dmC64GetGenericMCPixel(col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
802 bmoffs, scroffs,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
803 vshift, 0,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
804 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
805 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
806
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
807
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
808 static int fmtProbeTruePaintPacked(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
809 {
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
810 // 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
811 // relocation of decompression code
1684
e7990551c6d6 Rename function variable.
Matti Hamalainen <ccr@tnsp.org>
parents: 1671
diff changeset
812 static const Uint8 magicID[] = {
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
813 0x0b, 0x08, 0x09, 0x00, 0x9e, 0x32, 0x30, 0x35,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
814 0x39, 0x00, 0xa2, 0x00, 0x78, 0xbd, 0x1c, 0x08,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
815 0x9d, 0xf5, 0x00, 0xe8, 0xd0, 0xf7, 0xe6, 0x01,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
816 0x4c, 0x01, 0x01, 0xa5, 0xfe, 0xd0, 0x02, 0xc6,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
817 0xff, 0xc6, 0xfe
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
818 };
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
819
1789
9f5c5ab0e85e Adjust True Paint probing to be slightly more forgiving vs. file size.
Matti Hamalainen <ccr@tnsp.org>
parents: 1788
diff changeset
820 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
821 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
822 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
823 return DM_PROBE_SCORE_MAX;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
824
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
825 return DM_PROBE_SCORE_FALSE;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
826 }
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
827
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
828
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
829 //
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
830 // 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
831 // 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
832 // simplistic "codebook".
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
833 //
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
834 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
835 {
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
836 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
837 {
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
838 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
839 "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
840 }
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
841 else
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
842 return DMERR_OK;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
843 }
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
844
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
845
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
846 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
847 {
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
848 int res = DMERR_OK;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
849 const Uint8 *codeBook1, *codeBook2;
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
850 DMGrowBuf dst, src;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
851 DMCompParams cfg;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
852 Uint8 data;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
853
1724
12504f179749 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1723
diff changeset
854 // 1b7e-67e8 decoded by original depacker
12504f179749 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1723
diff changeset
855 // 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
856 cfg.func = fmt->name;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
857 cfg.type = DM_COMP_RLE_MARKER;
1724
12504f179749 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1723
diff changeset
858 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
859 cfg.rleMarkerB = 0xfe;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
860 cfg.cropOutLen = 0x67e8 - 0x1c00;
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
861
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
862 // 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
863 codeBook1 = psrc->data + 0x81 - 2;
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
864 codeBook2 = psrc->data + 0x85 - 2;
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
865
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
866 // Allocate output buffer
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
867 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
868 goto out;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
869
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
870 // 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
871 // 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
872 dmGrowBufConstCopy(&src, psrc);
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
873 dmSetupRLEBuffers(&dst, &src, &cfg);
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
874
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
875 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
876 {
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
877 unsigned int count = 1;
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
878 BOOL found = FALSE;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
879
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
880 for (int n = 0; n < 8; n++)
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
881 if (codeBook1[n] == data && !found)
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
882 {
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
883 found = TRUE;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
884 switch (n)
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
885 {
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
886 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
887 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
888 goto out;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
889
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
890 count = data;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
891 if (data == 0)
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
892 goto finish;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
893
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
894 // fallthrough
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
895
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
896 case 1: // Y = 1, JTO = $17
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
897 count += 2;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
898 // fallthrough
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
899
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
900 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
901 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
902 goto out;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
903 break;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
904
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
905 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
906 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
907 goto out;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
908
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
909 count = data;
1649
dbdff3d50a4e Clean up fmtDecodeTruePaintPacked() a bit, and fix GCC warnings about
Matti Hamalainen <ccr@tnsp.org>
parents: 1648
diff changeset
910 // fallthrough
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
911
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
912 case 3: // Y = 3, JTO = $0B
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
913 count += 2;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
914 data = 0;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
915 break;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
916
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
917 default: // Y = [5..8], JTO = $00
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
918 count++;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
919 data = codeBook2[n];
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
920 break;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
921 }
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
922 }
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
923
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
924 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
925 goto out;
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
926 }
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
927
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
928 finish:
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
929 dmFinishRLEBuffers(&dst, &src, &cfg);
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
930 res = dmC64DecodeGenericBMP(img, &dst, fmt);
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
931
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
932 out:
1722
de8e0a404c06 Refactor fmtDecodeTruePaintPacked() to use more generic DMGrowBuf functions
Matti Hamalainen <ccr@tnsp.org>
parents: 1714
diff changeset
933 dmGrowBufFree(&dst);
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
934 return res;
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
935 }
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
936
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
937
2299
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
938 static int fmtGetPixelFlinterlazer(Uint8 *col,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
939 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
940 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
941 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
942 const int vbank = rasterY & 7;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
943 int res;
2300
a494e4a4b6bc Minor improvements to Flinterlazer support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2299
diff changeset
944 Uint8 color1, color2, bgcol = img->bgcolor;
a494e4a4b6bc Minor improvements to Flinterlazer support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2299
diff changeset
945
a494e4a4b6bc Minor improvements to Flinterlazer support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2299
diff changeset
946 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
947 (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
948 return res;
2300
a494e4a4b6bc Minor improvements to Flinterlazer support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2299
diff changeset
949
a494e4a4b6bc Minor improvements to Flinterlazer support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2299
diff changeset
950 *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
951 return DMERR_OK;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
952 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
953
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
954
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
955 enum
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
956 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
957 I_BRK = 0x00,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
958 I_RTS = 0x60,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
959 I_LDA_IMD = 0xa9,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
960 I_STA_ABS = 0x8d,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
961 };
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
962
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
963
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
964 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
965 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
966 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
967 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
968 Uint16 reg_ptr;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
969
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
970 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
971 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
972 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
973
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
974 switch (instr)
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
975 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
976 case I_LDA_IMD:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
977 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
978 goto out;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
979
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
980 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
981 break;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
982
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
983 case I_STA_ABS:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
984 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
985 goto out;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
986 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
987
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
988 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
989 goto out;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
990 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
991
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
992 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
993 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
994 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
995 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
996 break;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
997
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
998 case I_RTS:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
999 return DMERR_OK;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1000
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1001 default:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1002 return DMERR_INVALID_DATA;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1003 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1004 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1005
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1006 out:
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1007 return DMERR_INVALID_DATA;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1008 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1009
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1010
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1011 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
1012 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
1013 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1014 DMGrowBuf tmp;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1015 (void) op;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1016 (void) fmt;
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1017
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1018 // 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
1019 // 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
1020 return fmtDecode6502SpeedCode(
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1021 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
1022 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1023
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
1024
1668
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1665
diff changeset
1025 #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
1026 #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
1027 #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
1028 #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
1029 #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
1030
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1031
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1032 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
1033 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1034 if (buf->len >= XX2_MIN_SIZE &&
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1035 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
1036 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
1037 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
1038
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1039 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
1040 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1041
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1042
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1043 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
1044 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1045 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1046 DMGrowBuf tmp;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1047
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1048 // 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
1049 // 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
1050 // 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
1051 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
1052 return DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1053
1748
9c4b3fecc510 Use the new DMGrowBuf functions in XX2 format buffer enlarging.
Matti Hamalainen <ccr@tnsp.org>
parents: 1747
diff changeset
1054 tmp.len = tmp.size;
9c4b3fecc510 Use the new DMGrowBuf functions in XX2 format buffer enlarging.
Matti Hamalainen <ccr@tnsp.org>
parents: 1747
diff changeset
1055 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
1056 dmGrowBufFree(&tmp);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1057 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1058 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1059
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1060
1812
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1061 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
1062 {
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1063 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
1064 {
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1065 // Packed variant
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1066 if (fmt->size == 0 &&
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1067 dmCompareAddr16(buf, 2, fmt->addr + buf->len - 3) &&
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1068 dmCompareAddr16(buf, 4, 0x7ff2))
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1069 return DM_PROBE_SCORE_MAX;
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1070
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1071 // Unpacked variant
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1072 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
1073 {
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1074 // 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
1075 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
1076 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
1077 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
1078
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1079 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
1080 }
1812
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1081 }
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1082
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1083 return DM_PROBE_SCORE_FALSE;
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1084 }
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1085
7460a9b804e9 Oops. Add missing fmtProbeCosmosDesignsHiresManager() function. :S
Matti Hamalainen <ccr@tnsp.org>
parents: 1806
diff changeset
1086
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1087 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
1088 {
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1089 int res;
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1090 DMGrowBuf tmp;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1091 Uint8 data, *dstBuf;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1092 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
1093 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
1094 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
1095
2149
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1096 // Allocate output buffer
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1097 if ((dstBuf = dmMalloc0(dstSize)) == NULL)
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1098 {
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1099 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
1100 "Could not allocate memory for RLE decoding buffer.\n");
2149
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1101 }
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1102
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
1103 // 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
1104 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
1105 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
1106
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1107 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
1108 {
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
1109 // 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
1110 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
1111
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1112 // 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
1113 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
1114 {
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1115 // RLE run
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1116 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
1117 {
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1118 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
1119 "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
1120 goto out;
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1121 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1122
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
1123 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
1124 data = psrc->data[--srcOffs];
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1125
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1126 if (dstOffs < ncount)
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1127 goto finish;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1128
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1129 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
1130
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
1131 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
1132 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
1133
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
1134 srcOffs--;
2141
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1135 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1136 else
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1137 {
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1138 // 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
1139 ncount = data;
2150
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1140 if (srcOffs < ncount)
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1141 ncount = srcOffs;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1142
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1143 if (dstOffs < ncount)
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1144 ncount = dstOffs;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1145
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1146 srcOffs -= ncount;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1147 dstOffs -= ncount - 1;
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1148
b4fbb90937f7 Fix Cosmos Designs Hires Manager unpacker. What a mess. Ugh.
Matti Hamalainen <ccr@tnsp.org>
parents: 2149
diff changeset
1149 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
1150 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
1151 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1152 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1153
2149
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1154 finish:
810fc98d9003 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2141
diff changeset
1155
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
1156 // 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
1157 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
1158 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
1159
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
1160 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
1161 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
1162
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
1163 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
1164 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
1165
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1166 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
1167
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1168 out:
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1169 dmFree(dstBuf);
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1170 return res;
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1171 }
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1172
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
1173
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1174 static const char *fmtFunPaint2_MagicID = "FUNPAINT (MT) ";
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1175 #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
1176
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1177
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1178 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
1179 {
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1180 if (buf->len > 30 &&
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1181 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
1182 {
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1183 // Unpacked variant
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1184 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
1185 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
1186
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1187 // Packed variant
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1188 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
1189 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
1190 }
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1191
a7f9e12bcd9b Improve probing of FunPaint 2 packed vs. unpacked format variants.
Matti Hamalainen <ccr@tnsp.org>
parents: 1776
diff changeset
1192 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
1193 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1194
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1195
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1196 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
1197 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1198 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1199 DMGrowBuf tmp;
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1200
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1201 // 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
1202 if (buf->data[14])
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1203 {
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1204 DMGrowBuf mem;
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1205 DMCompParams cfg;
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1206
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
1207 cfg.func = fmt->name;
1712
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
1208 cfg.type = DM_COMP_RLE_MARKER;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
1209 cfg.flags = DM_RLE_BYTE_RUNS | DM_RLE_ORDER_1;
1f4ed247763d Indentation cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
1210 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
1211
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1212 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
1213 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
1214
1598
b5e0f28f1842 Adjust Fun Paint 2 decoding now that the RLE decoding is fixed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1594
diff changeset
1215 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
1216 &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
1217 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
1218
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1219 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
1220 dmGrowBufFree(&tmp);
1579
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1221 }
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1222 else
4288b21e97b9 Improve and simplify Fun Paint 2 format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1578
diff changeset
1223 {
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1224 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
1225 }
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1226
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1227 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1228 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1229
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1230
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1231 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
1232 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1233 // Add the header bits
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1234 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
1235 !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
1236 !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
1237 return DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1238
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1239 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
1240 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1241
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1242
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1243 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
1244 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1245 int res;
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1246 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
1247 DMCompParams cfg;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1248
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1249 // 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
1250 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
1251 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1252
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
1253 // 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
1254 cfg.func = fmt->name;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
1255 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
1256 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
1257 cfg.rleMinCountB = 4;
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1653
diff changeset
1258 cfg.rleMaxCountB = 255;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1259
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1260 dmGenericRLEAnalyze(&mem, &cfg);
1661
dc3fbd130db7 RLE analyze was ran before setting up the compression config. Oops. Fixed.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
1261
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1262 // Add the header bits
2188
9b7d5e219d4b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2187
diff changeset
1263 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
1264 !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
1265 !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
1266 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1267 res = DMERR_MALLOC;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1268 goto out;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1269 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1270
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1271 // 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
1272 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
1273
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1274 out:
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1697
diff changeset
1275 dmGrowBufFree(&mem);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1276 return res;
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1277 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1278
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1279
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1280 static int fmtGetPixelFunPaint2(Uint8 *col,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1281 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
1282 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1283 const int
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1284 x = rasterX / 8,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1285 y = rasterY / 8,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1286 yb = rasterY & 7,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1287 yoffs = y * img->fmt->chWidth,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1288 bmoffs = yoffs * 8 + yb + (x * 8),
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1289 scroffs = yoffs + x,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1290 bitmap = rasterX & 1,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1291 vbank = yb + (bitmap * 8),
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1292 vshift = 6 - (rasterX & 6);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1293
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1294 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
1295 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
1296
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1297 return dmC64GetGenericMCPixel(col, img,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1298 bmoffs, scroffs,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1299 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
1300 bitmap, 0, bgcol);
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1301 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1302
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1303
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1304 static int fmtGetPixelBFLI(Uint8 *col,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1305 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
1306 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1307 DM_C64_GENERIC_MC_PIXEL_DEFS(img)
1857
5d9dd663df8d Fix Pu-239 BFLI / BigFLI support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1856
diff changeset
1308 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
1309 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
1310
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1311 return dmC64GetGenericMCPixel(col, img,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1312 bmoffs & 0x1fff, scroffs & 0x3ff,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1313 vshift, vbank,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1314 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
1315 }
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
1316
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
1317
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1318 static int fmtGetPixelPentelPaint(Uint8 *col,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1319 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
1320 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1321 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
2163
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1322 const int spr_y = rasterY / D64_SPR_HEIGHT_PX;
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1323 const int spr_yd = rasterY % D64_SPR_HEIGHT_PX;
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1324 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
1325 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
1326 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
1327 const int mask = 1 << (7 - (rasterX & 7));
2163
1e7d80bfc8f1 Rename some variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 2161
diff changeset
1328 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
1329
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1330 Uint8 color1,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1331 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
1332 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
1333
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1334 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
1335 return res;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1336
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1337 *col = color3 ? color3 : ( color2 ? color2 : color1 );
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1338 return DMERR_OK;
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1339 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1340
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1341
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1342 // 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
1343 #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
1344 #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
1345
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1346 // 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
1347 #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
1348 #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
1349
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1350 #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
1351 #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
1352
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1353 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
1354 {
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1355 { 0x80, 0x84, 0x85, 0x89, 0x8A, 0x8E, 0x8F, 0x93 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1356 { 0x94, 0x98, 0x99, 0x9D, 0x9E, 0xA2, 0xA3, 0xA7 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1357 { 0xA8, 0xAC, 0xAD, 0xB1, 0xB2, 0xB6, 0xB7, 0xBB },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1358 { 0xBC, 0xC0, 0xC1, 0xC5, 0xC6, 0xCA, 0xCB, 0xCF },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1359 { 0xD0, 0xD4, 0xD5, 0xD9, 0xDA, 0xDE, 0xDF, 0xE3 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1360 { 0xE4, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1361 { 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6 },
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1362 { 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
1363 };
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1364
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1365
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1366 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
1367 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1368 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
1369 };
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1370
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1371
2167
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1372 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
1373 {
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1374 // 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
1375 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
1376 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
1377 {
2187
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1378 int score = DM_PROBE_SCORE_MAYBE;
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1379 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
1380 {
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1381 if (memcmp(buf->data + 2 + (nbank * 0x0400) + 0x03f8,
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1382 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
1383 score += DM_PROBE_SCORE_GOOD;
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1384 }
ec47c60d26e2 Improve Crest Super Hires FLI probing.
Matti Hamalainen <ccr@tnsp.org>
parents: 2186
diff changeset
1385 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
1386 }
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1387
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1388 // Packed variant
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1389 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
1390 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
1391 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
1392 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
1393
2167
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1394 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
1395 }
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1396
9d362ea1a606 Add probe function for Crest Super Hires FLI Editor v1.0 (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 2166
diff changeset
1397
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1398 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
1399 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1400 int res;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1401 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
1402 DMCompParams cfg;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1403
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1404 // 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
1405 // 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
1406 // 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
1407 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
1408 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
1409 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
1410 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
1411
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1412 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
1413 &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
1414 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1415 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
1416 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
1417 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
1418
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1419 // 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
1420 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
1421 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1422 res = dmError(DMERR_INVALID_DATA,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1423 "%s: Unexpected uncompressed data size %d bytes (should be %d).\n",
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1424 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
1425 goto out;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1426 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1427
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1428 // 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
1429 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
1430 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1431 res = dmError(DMERR_MALLOC,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1432 "%s: Could not allocate temporary memory buffer of %d bytes.\n",
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1433 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
1434 goto out;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1435 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1436
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1437 // 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
1438 // 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
1439 //
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1440 // 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
1441 // 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
1442 // 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
1443 // 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
1444 // 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
1445 //
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1446
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1447 // 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
1448 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
1449 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
1450 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
1451 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
1452
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1453 // 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
1454 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
1455 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1456 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
1457
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1458 // 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
1459 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
1460
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1461 // 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
1462 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
1463 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1464
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1465 // 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
1466 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
1467 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1468 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
1469 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
1470
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1471 // 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
1472 // 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
1473 // 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
1474 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
1475 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
1476 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
1477
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1478 // 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
1479 // 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
1480 // 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
1481 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
1482 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
1483
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1484 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
1485 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1486 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
1487 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
1488 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1489
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1490 // 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
1491 // 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
1492 // next bank, etc.
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1493 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
1494 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
1495
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1496 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
1497 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1498 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
1499 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
1500 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1501 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1502
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1503 // 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
1504 // 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
1505 // 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
1506 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
1507 {
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1508 const int yd = yc % D64_SPR_HEIGHT_PX;
2190
0447f4c6c32b Fix a const discard issue.
Matti Hamalainen <ccr@tnsp.org>
parents: 2189
diff changeset
1509 const Uint8 *sprPtrs = fmtCrestSHFLI_Sprite_pointers[yc % 8];
0447f4c6c32b Fix a const discard issue.
Matti Hamalainen <ccr@tnsp.org>
parents: 2189
diff changeset
1510 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
1511
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1512 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
1513 sp1 = mem.data + DM_CREST_SHFLI_IMG_WIDTH * yc;
2191
488130151097 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2190
diff changeset
1514 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
1515
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1516 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
1517 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1518 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
1519 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
1520 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
1521
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1522 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
1523 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
1524 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
1525 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1526 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1527
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1528 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
1529 dmFree(dstBuf);
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1530 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1531
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1532 out:
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1533 dmGrowBufFree(&mem);
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1534
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1535 return res;
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1536 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1537
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1538
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
1539 static int fmtGetSpritePixelCrestSHFLI(Uint8 *col,
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1540 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
1541 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
1542 {
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1543 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
1544
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1545 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
1546 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
1547
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1548 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
1549 {
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1550 *col = img->extraData[15].data[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
1551 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
1552 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1553
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1554 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
1555 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1556
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1557
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1558 static int fmtGetPixelCrestSHFLI(Uint8 *col,
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1559 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
1560 {
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1561 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
1562 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
1563 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
1564 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
1565 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
1566
2195
868b68c188e5 Cleanup Crest SHFLI decoding and use specific constants better.
Matti Hamalainen <ccr@tnsp.org>
parents: 2193
diff changeset
1567 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
1568 {
2178
e1b7c021db8a Default the Crest Super Hires FLI background to 0x0F for the unused bottom
Matti Hamalainen <ccr@tnsp.org>
parents: 2174
diff changeset
1569 *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
1570 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
1571 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1572
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1573 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
1574 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
1575 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
1576 {
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1577 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
1578 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
1579 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
1580 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
1581 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
1582 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
1583 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
1584
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1585 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
1586 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
1587 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
1588
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1589 if ((res = fmtGetSpritePixelCrestSHFLI(col, img, spr_index1, 0, spr_xd, spr_yd, mask)) == 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
1590 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
1591 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
1592
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1593 if ((res = fmtGetSpritePixelCrestSHFLI(col, img, spr_index2, 1, spr_xd, spr_yd, mask)) == 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
1594 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
1595 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
1596 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1597
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1598 if ((res = dmC64GetGenericSCPixel(col, img, bmoffs, scroffs, vshift, nbank, 0)) != 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
1599 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
1600
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1601 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
1602 }
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1603
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
1604
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1605 static int fmtGetPixelHCB(Uint8 *col,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1606 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
1607 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1608 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
1609 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
1610 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
1611
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1612 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
1613 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
1614
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1615 return dmC64GetGenericMCPixel(col, img,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1616 bmoffs, scroffs,
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1617 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
1618 0, vbank, bgcol);
1876
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
1619 }
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
1620
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
1621
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1622 static int fmtGetPixelCrestHIFLIorCDHM(Uint8 *col,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1623 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
1624 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1625 DM_C64_GENERIC_SC_PIXEL_DEFS(img)
2133
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1626
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1627 return dmC64GetGenericSCPixel(col, img,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1628 bmoffs, scroffs,
898c1edadbc6 Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2130
diff changeset
1629 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
1630 }
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1631
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1632
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1633 static int fmtGetPixelECI(Uint8 *col,
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1634 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
1635 {
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1636 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
1637 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
1638 Uint8 color1, color2;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1639 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
1640
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1641 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
1642 (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
1643 return res;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1644
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1645 *col = (color1 * D64_NCOLORS) + color2;
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1646 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
1647 }
183d503b17a7 Implement support for hires FLI interlaced "ECI Graphic Editor 1.0 (unpacked)" format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1731
diff changeset
1648
183d503b17a7 Implement support for hires FLI interlaced "ECI Graphic Editor 1.0 (unpacked)" format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1731
diff changeset
1649
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1779
diff changeset
1650 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
1651 {
2168
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1652 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
1653
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1654 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
1655 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
1656 {
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1657 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
1658
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1659 // 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
1660 // 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
1661 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
1662 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
1663
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1664 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
1665 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
1666 else
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1667 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
1668 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
1669 else
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1670 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
1671 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
1672 }
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1673
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1674 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
1675 buf->len == 16386 ||
1979
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
1676 // Face Painter
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
1677 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
1678 score /= 3;
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1679
b4f4251eaaae Improve probing resiliency of Cosmos Designs and ECI formats, and try to
Matti Hamalainen <ccr@tnsp.org>
parents: 2167
diff changeset
1680 return score;
1739
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1681 }
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1682
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1683
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1684 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
1685 {
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1686 int res;
2170
7c4c9013e412 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2169
diff changeset
1687 DMGrowBuf mem, tmp;
1739
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1688 DMCompParams cfg;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1689
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1690 cfg.func = fmt->name;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1691 cfg.type = DM_COMP_RLE_MARKER;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1692 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
1693 cfg.rleMarkerB = buf->data[0];
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1694
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1695 if ((res = dmDecodeGenericRLEAlloc(
1747
5e928618fdc8 Change DMGrowBuf API somewhat and implement more copy operations.
Matti Hamalainen <ccr@tnsp.org>
parents: 1746
diff changeset
1696 &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
1697 res = dmC64DecodeGenericBMP(img, &mem, fmt);
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1698
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1699 dmGrowBufFree(&mem);
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1700 return res;
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1701 }
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1702
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1703
1912
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1704 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
1705 {
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1706 int res;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1707 DMGrowBuf tmp;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1708 DMCompParams cfg;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1709
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1710 // 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
1711 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
1712 goto out;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1713
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1714 // 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
1715 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
1716 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
1717 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
1718 cfg.rleMinCountB = 4;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1719 cfg.rleMaxCountB = 255;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1720
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1721 dmGenericRLEAnalyze(&tmp, &cfg);
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1722
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1723 // 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
1724 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
1725 {
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1726 res = DMERR_MALLOC;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1727 goto out;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1728 }
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1729
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1730 // 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
1731 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
1732
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1733 out:
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1734 dmGrowBufFree(&tmp);
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1735 return res;
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1736 }
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1737
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
1738
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1739 //
1795
c8d690e8f9e9 Fix some typos in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1792
diff changeset
1740 // Helper macros for defining screen memory layouts
c8d690e8f9e9 Fix some typos in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1792
diff changeset
1741 // 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
1742 //
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
1743 #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
1744 { 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
1745
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
1746 #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
1747 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
1748 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
1749 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
1750 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
1751 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
1752 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
1753 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
1754 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
1755
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
1756
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
1757 //
1861
752893fa6412 Update a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 1860
diff changeset
1758 // 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
1759 // 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
1760 // 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
1761 //
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1762 DMC64ImageCommonFormat dmC64CommonFormats[] =
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
1763 {
1815
2b68b6955635 Rename "Koala Paint" to "Koala Painter".
Matti Hamalainen <ccr@tnsp.org>
parents: 1813
diff changeset
1764 { // #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
1765 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1766 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1767 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
1768 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
1769 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1770 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1771 {
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
1772 { 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
1773 { 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
1774 { 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
1775 { 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
1776 { 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
1777 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1778 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1779
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1780 { // #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
1781 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1782 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1783 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
1784 2, 1,
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1785 NULL, NULL,
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1786 fmtGetPixelBlackMailFLI,
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
1787 {
2294
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
1788 { DO_COPY , DS_EXTRA_DATA , 0x0000, 0, 200 , 0, NULL, NULL, DF_NORMAL },
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
1789 { DO_COPY , DS_COLOR_RAM , 0x0100, 0, 0 , 0, NULL, NULL, DF_NORMAL },
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
1790 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x0500, 0, 0x400, 0, DF_NORMAL),
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
1791 { DO_COPY , DS_BITMAP_RAM , 0x2500, 0, 0 , 0, NULL, NULL, DF_NORMAL },
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
1792
7f6ba3b32f54 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 2287
diff changeset
1793 { 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
1794 { 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
1795 }
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1796 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
1797
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1798 { // #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
1799 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1800 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1801 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
1802 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
1803 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1804 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1805 {
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
1806 { 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
1807 { 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
1808 { 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
1809 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1810 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
1811
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1812 { // #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
1813 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
1814 D64_SCR_WIDTH, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1815 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
1816 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
1817 NULL, NULL,
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
1818 fmtGetPixelFunPaint2,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1819 {
2224
a36c81c3df85 Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
1820 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
1821 { 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
1822 { 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
1823 { 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
1824 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
1825 { 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
1826 { 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
1827 { 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
1828 { 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
1829 { 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
1830 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1831 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
1832
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1833 { // #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
1834 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1835 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1836 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
1837 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
1838 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1839 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1840 {
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
1841 { 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
1842 { 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
1843 { 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
1844 { 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
1845 { 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
1846 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1847 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
1848
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1849 { // #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
1850 D64_FMT_MC | D64_FMT_ILACE,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1851 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1852 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
1853 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
1854 NULL, NULL,
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2127
diff changeset
1855 fmtGetPixelDrazLace,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1856 {
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
1857 { 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
1858 { 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
1859 { 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
1860 { 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
1861 { 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
1862 { 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
1863 { 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
1864 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1865 },
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
1866
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1867 { // #6: TruePaint
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1868 D64_FMT_MC | D64_FMT_ILACE,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1869 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1870 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
1871 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
1872 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1873 fmtGetPixelTruePaint,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1874 {
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
1875 { 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
1876 { 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
1877 { 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
1878 { 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
1879 { 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
1880 { 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
1881 { 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
1882 { 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
1883 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1884 },
1739
83f50e431206 Implement support for ECI packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1734
diff changeset
1885
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1886 { // #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
1887 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
1888 D64_SCR_WIDTH, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1889 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
1890 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
1891 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
1892 fmtGetPixelECI,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1893 {
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
1894 { 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
1895 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
1896 { 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
1897 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
1898 { 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
1899 { 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
1900 { 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
1901 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1902 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1903
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1904 { // #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
1905 D64_FMT_HIRES | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1906 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
1907 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
1908 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
1909 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1910 fmtGetPixelCrestHIFLIorCDHM,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1911 {
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
1912 { 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
1913 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
1914 { 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
1915 { 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
1916 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1917 },
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
1918
2018
1c45b2fb471d Adjust a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 2015
diff changeset
1919 { // #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
1920 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1921 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1922 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
1923 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
1924 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
1925 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
1926 {
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
1927 { 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
1928 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
1929 { 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
1930 { 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
1931 { 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
1932 }
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
1933 },
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
1934
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
1935 { // #10: Doodle
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
1936 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1937 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
1938 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
1939 1, 1,
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
1940 NULL, NULL,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
1941 NULL,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
1942 {
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
1943 { 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
1944 { 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
1945 { 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
1946 }
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
1947 },
2189
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1948
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1949 { // #11: Crest Super Hires FLI Editor 1.0 (SHF)
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1950 D64_FMT_HIRES | D64_FMT_FLI,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1951 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
1952 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
1953 1, 1,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1954 NULL, NULL,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1955 fmtGetPixelCrestSHFLI,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1956 {
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
1957 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
1958 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
1959 { 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
1960 { 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
1961 { 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
1962 { 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
1963 { 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
1964 }
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
1965 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
1966 };
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
1967
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
1968
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
1969 //
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
1970 // 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
1971 //
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1972 DMC64ImageFormat dmC64ImageFormats[] =
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1973 {
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1974 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1975 "d2p", "DrazPaint 1.4/2.0 (packed)", 0x5800, 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
1976 fmtProbeDrazPaint20Packed,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1977 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
1978 { }, &dmC64CommonFormats[4]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1979 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1980
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1981 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1982 "drp", "DrazPaint (unpacked)", 0x5800, 10051, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1983 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1984 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
1985 { }, &dmC64CommonFormats[4]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1986 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1987
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1988 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1989 "dlp", "DrazLace 1.0 (packed)", 0x5800, 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
1990 fmtProbeDrazLace10Packed,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1991 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
1992 { }, &dmC64CommonFormats[5]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1993 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1994
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1995 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
1996 "drl", "DrazLace 1.0 (unpacked)", 0x5800, 18242, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1997 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1998 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
1999 { }, &dmC64CommonFormats[5]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2000 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2001
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2002 {
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2003 "bdp5", "Boogie Down Paint 5 (packed)", 0x5000, 0, DM_FMT_RDWR,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2004 fmtProbeBDP5Packed,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2005 fmtDecodeBDP5Packed, fmtEncodeBDP5Packed,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2006 { }, &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
2007 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2008
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2009 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2010 "vid", "Vidcom 64 (unpacked)", 0x5800, 10050, DM_FMT_RDWR,
1574
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2011 NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2012 NULL, NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2013 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2014 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2015 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2016 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
2017 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
2018 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2019 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2020 {
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
2021 { 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
2022 { 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
2023 { 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
2024 { 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
2025 { 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
2026 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2027 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2028 NULL
1574
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2029 },
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2030
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2031 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2032 "p64", "Picasso 64 (unpacked)", 0x1800, 10050, DM_FMT_RDWR,
1574
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2033 NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2034 NULL, NULL,
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2035 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2036 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2037 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2038 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
2039 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
2040 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2041 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2042 {
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
2043 { 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
2044 { 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
2045 { 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
2046 { 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
2047 { 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
2048 },
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2049 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2050 NULL
1574
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2051 },
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2052
0b0870a216e9 Add support for "Picasso 64" and "Vidcom 64" multicolor formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1573
diff changeset
2053 {
1816
8d7b424197bc Allow writing of unpacked True Paint format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1815
diff changeset
2054 "mci", "Truepaint (unpacked)", 0x9c00, 19434, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2055 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2056 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
2057 { }, &dmC64CommonFormats[6]
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2058 },
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2059
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2060 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2061 "mcip", "Truepaint (packed)", 0x0801, 0, DM_FMT_RD,
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2062 fmtProbeTruePaintPacked,
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2063 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
2064 { }, &dmC64CommonFormats[6]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2065 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2066
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2067 {
1815
2b68b6955635 Rename "Koala Paint" to "Koala Painter".
Matti Hamalainen <ccr@tnsp.org>
parents: 1813
diff changeset
2068 "kla", "Koala Painter (unpacked)", 0x6000, 10003, 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
2069 fmtProbeKoalaPainter,
1646
415c732dc14c Implement support for packed TruePaint images.
Matti Hamalainen <ccr@tnsp.org>
parents: 1636
diff changeset
2070 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
2071 { }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2072 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2073
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2074 {
1839
666b27999570 As the Koala Painter plain RLE compression (without headers and static
Matti Hamalainen <ccr@tnsp.org>
parents: 1838
diff changeset
2075 "klp", "Koala Painter (packed)", 0x6000, 0xfe, DM_FMT_RDWR, // size is abused for RLE marker byte
1815
2b68b6955635 Rename "Koala Paint" to "Koala Painter".
Matti Hamalainen <ccr@tnsp.org>
parents: 1813
diff changeset
2076 fmtProbeKoalaPainterPacked,
1839
666b27999570 As the Koala Painter plain RLE compression (without headers and static
Matti Hamalainen <ccr@tnsp.org>
parents: 1838
diff changeset
2077 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
2078 { }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2079 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2080
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2081 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2082 "aas", "Advanced Art Studio (unpacked)", 0x2000, 10018, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2083 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2084 NULL, NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2085 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2086 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2087 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2088 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
2089 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
2090 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2091 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2092 {
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
2093 { 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
2094 { 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
2095 { 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
2096 { 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
2097 { 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
2098 { 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
2099 },
1593
a77876a07425 Oops, missed this from the last commit.
Matti Hamalainen <ccr@tnsp.org>
parents: 1592
diff changeset
2100 },
a77876a07425 Oops, missed this from the last commit.
Matti Hamalainen <ccr@tnsp.org>
parents: 1592
diff changeset
2101 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2102 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2103
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2104 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2105 "ims", "Image System MC (unpacked)", 0x3c00, 10218, DM_FMT_RDWR,
1755
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2106 NULL,
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2107 NULL, NULL,
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2108 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2109 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2110 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2111 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2056
c27ed6465022 Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 2033
diff changeset
2112 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
2113 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2114 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2115 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2116 { DO_COPY , DS_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
2117 { 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
2118 { 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
2119 { 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
2120 { 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
2121 }
1755
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2122 },
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2123 NULL
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2124 },
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2125
841ee79030fa Implement support for Image System unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1754
diff changeset
2126 {
1985
5817e3335f53 Allow saving of Micro Illustrator format, but mark it "broken" again due to
Matti Hamalainen <ccr@tnsp.org>
parents: 1984
diff changeset
2127 "mil", "Micro Illustrator (unpacked)", 0x18dc, 10022, 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
2128 fmtProbeMicroIllustrator,
1758
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2129 NULL, NULL,
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2130 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2131 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2132 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2133 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
2134 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
2135 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2136 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2137 {
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
2138 { 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
2139 { 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
2140 { 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
2141 // 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
2142 { 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
2143 { 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
2144 { 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
2145 { 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
2146 { 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
2147 { 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
2148 { 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
2149 }
1758
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2150 },
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2151 NULL
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2152 },
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2153
8014e4cbebfe Add mostly working support for unknown unpacked multicolor format "MIL".
Matti Hamalainen <ccr@tnsp.org>
parents: 1757
diff changeset
2154 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2155 "cdu", "CDU-Paint (unpacked)", 0x7eef, 10277, DM_FMT_RDWR,
1754
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2156 NULL,
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2157 NULL, NULL,
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2158 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2159 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2160 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2161 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
2162 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
2163 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2164 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2165 {
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
2166 { 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
2167 { 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
2168 { 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
2169 { 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
2170 { 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
2171 }
1754
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2172 },
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2173 NULL
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2174 },
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2175
aa6a858db6bd Implement support for CPU-Paint unpacked format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1753
diff changeset
2176 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2177 "rbp", "Rainbow Painter (unpacked)", 0x5c00, 10242, DM_FMT_RDWR | DM_FMT_BROKEN,
1763
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2178 NULL,
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2179 NULL, NULL,
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2180 {
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,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2182 D64_SCR_WIDTH / 2, 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 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
2185 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2186 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2187 {
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
2188 { 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
2189 { 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
2190 { 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
2191 // 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
2192 { 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
2193 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2194 }
1763
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2195 },
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2196 NULL
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2197 },
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2198
847bd77a538d Implement Rainbow Painter format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1762
diff changeset
2199 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2200 "sar", "Saracen Paint (unpacked)", 0x7800, 10219, 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
2201 fmtProbeSaracenPaint,
1769
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2202 NULL, NULL,
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2203 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2204 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2205 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2206 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
2207 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
2208 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2209 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2210 {
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
2211 { 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
2212 { 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
2213 { 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
2214 { 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
2215 { 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
2216 }
1769
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2217 },
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2218 NULL
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2219 },
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2220
bf22cd877c13 Add support for Saracen Paint multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1768
diff changeset
2221 {
1980
2cf79254b8e4 Confirm the Blazing Paddles d020/bgcolor positions and remove the broken flag.
Matti Hamalainen <ccr@tnsp.org>
parents: 1979
diff changeset
2222 "blp", "Blazing Paddles (unpacked)", 0xA000, 10242, DM_FMT_RDWR,
1770
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2223 NULL,
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2224 NULL, NULL,
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2225 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2226 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2227 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2228 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
2229 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
2230 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2231 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2232 {
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
2233 { 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
2234 // 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
2235 { 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
2236 { 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
2237 { 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
2238 { 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
2239 { 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
2240 }
1770
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2241 },
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2242 NULL
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2243 },
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2244
a176dea422cb Add partially broken support for Blazing Paddles multicolor format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1769
diff changeset
2245 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2246 "pmg", "Paint Magic crippled MC (unpacked)", 0x3f8e, 9332, 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
2247 NULL,
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2248 NULL, NULL,
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2249 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2250 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2251 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2252 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
2253 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
2254 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2255 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2256 {
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
2257 { 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
2258 { 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
2259 { 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
2260 { 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
2261 { 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
2262 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2263 }
1762
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2264 },
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2265 NULL
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2266 },
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2267
b69f3d97db9e Implement support for "PMG" format, a crippled variant of standard c64
Matti Hamalainen <ccr@tnsp.org>
parents: 1760
diff changeset
2268 {
1779
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2269 "a64", "Wigmore Artist 64 (unpacked)", 0x4000, 10242, DM_FMT_RDWR,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2270 NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2271 NULL, NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2272 {
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2273 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2274 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2275 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
2276 2, 1,
1779
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2277 NULL, NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2278 NULL,
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
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 { 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
2282 { 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
2283 { 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
2284 { 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
2285 { 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
2286 }
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2287 },
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2288 NULL
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2289 },
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2290
20bf4140eaa1 Add support for another plain multicolor variant, "Wigmore Artist 64".
Matti Hamalainen <ccr@tnsp.org>
parents: 1778
diff changeset
2291 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2292 "ami", "Amica Paint (packed)", 0x4000, 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
2293 fmtProbeAmicaPaintPacked,
1538
af729e29a6f6 Implement Amica Paint packed format encoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 1535
diff changeset
2294 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
2295 { }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2296 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2297
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2298 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2299 "rpm", "Run Paint (unpacked)", 0x6000, 10006, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2300 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2301 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
2302 { }, &dmC64CommonFormats[0]
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2303 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2304
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2305 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2306 "ipc", "Interpaint MC (unpacked)", 0x4000, 10003, 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
2307 NULL,
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2308 NULL, NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2309 { }, &dmC64CommonFormats[0]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2310 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2311
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2312 {
1819
c12bd223000e Enable write support for some formats that should be workable.
Matti Hamalainen <ccr@tnsp.org>
parents: 1816
diff changeset
2313 "art", "Art Studio (unpacked)", 0x2000, 9009, DM_FMT_RDWR,
2161
6a6344f8f535 Add support for one more Art Studio hires variant.
Matti Hamalainen <ccr@tnsp.org>
parents: 2152
diff changeset
2314 fmtProbeArtStudio,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2315 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
2316 { }, &dmC64CommonFormats[2]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2317 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2318
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2319 {
1819
c12bd223000e Enable write support for some formats that should be workable.
Matti Hamalainen <ccr@tnsp.org>
parents: 1816
diff changeset
2320 "iph", "Interpaint (unpacked)", 0x4000, 9002, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2321 NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2322 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2323 { }, &dmC64CommonFormats[2]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2324 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2325
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2326 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2327 "dd", "Doodle (unpacked)", 0x1c00, 9218, DM_FMT_RDWR,
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2328 fmtProbeDoodle,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2329 NULL, NULL,
1840
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2330 { }, &dmC64CommonFormats[10]
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2331 },
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2332
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2333 {
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2334 "jj", "Doodle (packed)", 0x5c00, 0xfe, DM_FMT_RDWR, // size is abused for RLE marker byte
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2335 fmtProbeDoodle,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2336 fmtDecodeStaticRLEMarkerMode2, fmtEncodeStaticRLEMarkerMode2,
8d6bb48f2806 Implement support for packed variant of Doodle format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1839
diff changeset
2337 { }, &dmC64CommonFormats[10]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2338 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2339
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2340 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2341 "mon", "Monomagic (unpacked)", 0x2000, 8194, DM_FMT_RDWR,
1670
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2342 NULL,
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2343 NULL, NULL,
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2344 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2345 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2346 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2347 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
2348 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
2349 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2350 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2351 {
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
2352 { 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
2353 { 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
2354 // 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
2355 { 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
2356 }
1670
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2357 },
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2358 NULL
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2359 },
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2360
ab4a38ba919f Implement hires Mono Magic support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1669
diff changeset
2361 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2362 "hir", "Plain hires (unpacked)", 0x2000, 8002, DM_FMT_RDWR,
1671
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2363 NULL,
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2364 NULL, NULL,
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2365 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2366 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2367 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2368 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
2369 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
2370 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2371 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2372 {
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
2373 { 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
2374 { 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
2375 { 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
2376 }
1671
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2377 },
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2378 NULL
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2379 },
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2380
dd9528cdd14a Add support for a plain hires format at $2000.
Matti Hamalainen <ccr@tnsp.org>
parents: 1670
diff changeset
2381 {
1915
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2382 "gih", "Gigapaint hires (unpacked)", 0x6000, 8002, DM_FMT_RDWR,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2383 fmtProbeGigapaintHires,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2384 NULL, NULL,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2385 {
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2386 D64_FMT_HIRES,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2387 D64_SCR_WIDTH , D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2388 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
2389 1, 1,
1915
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2390 NULL, NULL,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2391 NULL,
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2392 {
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
2393 { 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
2394 { 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
2395 { 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
2396 }
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2397 },
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2398 NULL
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2399 },
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2400
788cfc7096f3 Add support for Gigapaint hires (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1912
diff changeset
2401 {
1857
5d9dd663df8d Fix Pu-239 BFLI / BigFLI support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1856
diff changeset
2402 "bfli", "Pu-239 Big FLI/BFLI (unpacked)", 0x3bff, 33795, 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
2403 NULL,
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2404 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
2405 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2406 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2407 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT * 2,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2408 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
2409 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
2410 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2411 fmtGetPixelBFLI,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2412 {
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
2413 { DO_COPY , DS_COLOR_RAM , 0x0001, 0, 0x400 , 0, NULL, NULL, DF_NORMAL },
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 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x0401, 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
2415 { DO_COPY , DS_BITMAP_RAM , 0x2401, 0, 0x2000, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2416 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM , 0x4401, 8, 0x400, 0x400, DF_NORMAL),
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2417 { 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
2418 { 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
2419 { 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
2420 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2421 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2422 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
2423 },
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2424
1f6aed186c4e Add somewhat broken support for "Big FLI" aka BFLI files. Needs more work.
Matti Hamalainen <ccr@tnsp.org>
parents: 1581
diff changeset
2425 {
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2426 "bml", "Black Mail FLI (unpacked)", 0x3b00, 17474, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2427 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2428 NULL, NULL,
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2429 { }, &dmC64CommonFormats[1]
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2430 },
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2431
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2432 {
1832
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
2433 "bmlp", "Black Mail FLI (packed)", 0x38f0, 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
2434 fmtProbeBlackMailFLIPacked,
1832
843d3a593f05 Implement write support for Black Mail FLI Designer packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1819
diff changeset
2435 fmtDecodeBlackMailFLIPacked, fmtEncodeBlackMailFLIPacked,
1788
04e13949b314 Implement support for packed variant of Black Mail FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1780
diff changeset
2436 { }, &dmC64CommonFormats[1]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2437 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2438
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2439 {
2014
a49f7e83edcb Fix FBI FLI Designer format names to match v1.x and v2.
Matti Hamalainen <ccr@tnsp.org>
parents: 1985
diff changeset
2440 "fd1", "FBI Crew FLI Designer 1.1 (unpacked)", 0x3c00, 17409, 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
2441 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
2442 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
2443 { }, &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
2444 },
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
2445
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
2446 {
2014
a49f7e83edcb Fix FBI FLI Designer format names to match v1.x and v2.
Matti Hamalainen <ccr@tnsp.org>
parents: 1985
diff changeset
2447 "fd2", "FLI Designer 2 (unpacked)", 0x3ff0, 17409, 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
2448 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
2449 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
2450 { }, &dmC64CommonFormats[9]
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2451 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2452
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2453 {
2299
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2454 "flnt", "Flinterlazer 1.0 (unpacked)", 0x284e, 38812, DM_FMT_RD | DM_FMT_BROKEN,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2455 NULL,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2456 NULL, NULL,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2457 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2458 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
2459 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
2460 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
2461 2, 1,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2462 NULL, NULL,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2463 fmtGetPixelFlinterlazer,
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2464 {
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2465 { 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
2466 { 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
2467
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2468 { 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
2469 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
2470
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2471 { 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
2472 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
2473
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2474 { 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
2475 { 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
2476 { 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
2477 { 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
2478 }
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2479 },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2480 NULL
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2481 },
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2482
ad019d930401 Add initial (broken) read support for Flinterlazer 1.0 images.
Matti Hamalainen <ccr@tnsp.org>
parents: 2294
diff changeset
2483 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2484 "eci", "ECI Graphic Editor 1.0 (unpacked)", 0x4000, 32770, DM_FMT_RDWR,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2485 NULL,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2486 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
2487 { }, &dmC64CommonFormats[7]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2488 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2489
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2490 {
1912
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2491 "ecp", "ECI Graphic Editor 1.0 (packed)", 0x4000, 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
2492 fmtProbeECIPacked,
1912
8d006508e6c1 Implement write support for ECI Graphic Editor 1.0 packed format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1880
diff changeset
2493 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
2494 { }, &dmC64CommonFormats[7]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2495 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2496
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2497 {
1979
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2498 "fpt", "Face Painter (unpacked)", 0x4000, 10004, DM_FMT_RDWR,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2499 NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2500 NULL, NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2501 { // 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
2502 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2503 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2504 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
2505 2, 1,
1979
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2506 NULL, NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2507 NULL,
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2508 {
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
2509 { 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
2510 { 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
2511 { 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
2512 { 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
2513 { 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
2514 { 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
2515 }
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2516 },
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2517 NULL
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2518 },
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2519
5fc3da6061be Add support for Face Painter format (unpacked).
Matti Hamalainen <ccr@tnsp.org>
parents: 1946
diff changeset
2520 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2521 "xx1", "Unknown $2000 format (unpacked)", 0x2000, 10242, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2522 NULL,
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2523 NULL, NULL,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2524 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2525 D64_FMT_MC,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2526 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2527 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
2528 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
2529 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2530 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2531 {
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
2532 { 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
2533 { 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
2534 { 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
2535 { 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
2536 { 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
2537 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2538 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2539 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2540 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2541
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2542 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2543 "xx2", "Unknown $2000 format (unpacked)", 0x2000, 0, DM_FMT_RDWR,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2544 fmtProbeFormatXX2,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2545 fmtDecodeFormatXX2, NULL,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2546 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2547 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
2548 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
2549 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
2550 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
2551 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2552 NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2553 {
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
2554 { 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
2555 { 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
2556 { 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
2557 { 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
2558 { 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
2559 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2560 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2561 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2562 },
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2563
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2564 {
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2565 "fp2", "FunPaint II (unpacked)", 0x3ff0, 33694, DM_FMT_RDWR,
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2566 fmtProbeFunPaint2,
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2567 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
2568 { }, &dmC64CommonFormats[3]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2569 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2570
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2571 {
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2572 "fp2p", "FunPaint II (packed)", 0x3ff0, 0, DM_FMT_RDWR,
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2573 fmtProbeFunPaint2,
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2574 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
2575 { }, &dmC64CommonFormats[3]
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2576 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2577
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2578 {
2191
488130151097 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2190
diff changeset
2579 "gun", "GunPaint 1.1 (unpacked)", 0x4000, 33603, 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
2580 fmtProbeGunPaint,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2581 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2582 {
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2583 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
2584 D64_SCR_WIDTH, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2585 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
2586 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
2587 NULL, NULL,
1850
3d6917948061 Backed out changeset 914dbb50139f
Matti Hamalainen <ccr@tnsp.org>
parents: 1849
diff changeset
2588 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
2589 {
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
2590 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
2591 { 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
2592 { 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
2593 { 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
2594 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
2595 { 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
2596 // 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
2597 // 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
2598 { 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
2599 { 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
2600 { 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
2601 { 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
2602 { 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
2603 }
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2604 },
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2605 NULL
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2606 },
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2607
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2608 {
1877
f8b7baf3ff89 Some fixes to HCB support, now the background colors are supported correctly.
Matti Hamalainen <ccr@tnsp.org>
parents: 1876
diff changeset
2609 "hcb", "Half Char Bitmap (unpacked)", 0x5000, 12148, DM_FMT_RDWR,
1876
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2610 NULL,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2611 NULL, NULL,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2612 {
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2613 D64_FMT_MC | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2614 D64_SCR_WIDTH / 2, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2615 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
2616 2, 1,
1876
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2617 NULL, NULL,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2618 fmtGetPixelHCB,
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2619 {
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
2620 { 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
2621 { 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
2622 { 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
2623 { 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
2624 { 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
2625 { 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
2626 { 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
2627 { 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
2628 }
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2629 },
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2630 NULL
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2631 },
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2632
a35f6e19f57a Implement read-only support for HCB (Half Char Bitmap) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 1861
diff changeset
2633 {
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
2634 "pen", "Pentel Paint (unpacked)", 0x4800, 19845, DM_FMT_RD | DM_FMT_BROKEN,
1805
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2635 NULL,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2636 NULL, NULL,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2637 {
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2638 D64_FMT_HIRES | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2639 192, D64_SCR_HEIGHT,
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2640 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
2641 2, 1,
1805
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2642 NULL, NULL,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2643 fmtGetPixelPentelPaint,
c510bc979947 Reindent operator lists.
Matti Hamalainen <ccr@tnsp.org>
parents: 1804
diff changeset
2644 {
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
2645 { 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
2646 { 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
2647 { 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
2648 { 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
2649 { 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
2650 { 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
2651 { 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
2652 { 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
2653 }
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2654 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2655 NULL
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2656 },
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2657
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2658 {
2169
271850d7dd9b Rename "Crest Hires FLI Designer (unpacked)" format short name to "chfd" from "chid".
Matti Hamalainen <ccr@tnsp.org>
parents: 2168
diff changeset
2659 "chfd", "Crest Hires FLI Designer (unpacked)", 0x4000, 16386, DM_FMT_RDWR,
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2660 NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2661 NULL, NULL,
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2662 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2663 D64_FMT_HIRES | D64_FMT_FLI,
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
2664 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
2665 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
2666 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
2667 NULL, NULL,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2668 fmtGetPixelCrestHIFLIorCDHM,
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1773
diff changeset
2669 {
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
2670 { 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
2671 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
2672 { 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
2673 { 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
2674 }
1592
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2675 },
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1590
diff changeset
2676 NULL
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2677 },
1803
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
2678
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
2679 {
2197
23dd0e0fe25d Enable write support for Crest Super Hires FLI unpacked format (only
Matti Hamalainen <ccr@tnsp.org>
parents: 2196
diff changeset
2680 "cshf", "Crest Super Hires FLI Editor v1.0 (unpacked)", 0x4000, 15874, 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
2681 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
2682 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
2683 { }, &dmC64CommonFormats[11]
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2684 },
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2685
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2686 {
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2687 "cshfp", "Crest Super Hires FLI Editor v1.0 (packed)", 0xa000, 0, DM_FMT_RD,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2688 fmtProbeCrestSHFLI,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2689 fmtDecodeCrestSHFLIPacked, NULL,
83391646ff16 Add read support for packed version of Crest Super Hires FLI format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2188
diff changeset
2690 { }, &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
2691 },
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
2692
3d3094ba21c5 Add read-only support for Crest Super Hires FLI Editor v1.0 (unpacked) format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2164
diff changeset
2693 {
1879
3b2f755c5745 Allow writing of "Crest Hires FLI Designer (unpacked)" and "Cosmos Designs Hires Manager (unpacked)" formats.
Matti Hamalainen <ccr@tnsp.org>
parents: 1878
diff changeset
2694 "cdhm", "Cosmos Designs Hires Manager (unpacked)", 0x4000, 16385, DM_FMT_RDWR,
1803
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
2695 fmtProbeCosmosDesignsHiresManager,
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
2696 NULL, NULL,
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
2697 { }, &dmC64CommonFormats[8]
7df833754fd1 Add Cosmos Designs Hires Manager unpacked format support.
Matti Hamalainen <ccr@tnsp.org>
parents: 1802
diff changeset
2698 },
2138
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
2699
2130
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2700 {
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
2701 "cdhp", "Cosmos Designs Hires Manager (packed)", 0x4000, 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
2702 fmtProbeCosmosDesignsHiresManager,
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
2703 fmtDecodeCosmosDesignsHiresManagerPacked, NULL,
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
2704 { }, &dmC64CommonFormats[8]
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
2705 },
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
2706
009ee261704c Add somewhat broken support for decoding packed Cosmos Designs Hires Manager files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
2707 {
2287
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
2708 "mrqp", "Marq's PETSCII editor (unpacked)", 0x0801, 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
2709 fmtProbeMarqPETSCII,
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2710 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
2711 {
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2712 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
2713 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
2714 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
2715 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
2716 NULL, NULL,
2172
de88333acc44 Move the PETSCII getpixel function to lib64gfx.c and remove the
Matti Hamalainen <ccr@tnsp.org>
parents: 2170
diff changeset
2717 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
2718 {
2134
5daed72fd211 Improve Marq's PETSCII prg export support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2133
diff changeset
2719 // For offset values see petscii/m_c64.pde :: save_prg()
2287
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
2720 { DO_FUNC , 0 , 0 , 0, 0, 0, NULL, fmtSetMarqPETSCIIData, DF_NORMAL },
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
2721 { 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
2722 { 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
2723 { 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
2724 { DO_SET_MEM_LO , DS_BGCOL , 30 - 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
2725 { DO_COPY , DS_EXTRA_DATA , 20 - 2, 0, 1, 0, NULL, NULL, DF_NORMAL },
2287
631bbd451d08 Add write support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2265
diff changeset
2726 { DO_FUNC , 0 , 0 , 0, 0, 0, fmtGetMarqPETSCIIData, 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
2727
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2728 { 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
2729 }
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2730 },
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2731 NULL
3b5be00759ed Add initial (and incomplete) support for Marq's PETSCII editor PRG export format.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
2732 },
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
2733
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
2734 {
2173
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2735 "upet", "Unknown PETSCII (unpacked)", 0x0801, 2499, DM_FMT_RD,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2736 NULL,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2737 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
2738 {
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2739 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
2740 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
2741 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
2742 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
2743 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
2744 NULL,
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2745 {
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
2746 { 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
2747 { 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
2748
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2749 // For offset values see petscii/m_c64.pde :: save_prg()
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
2750 { 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
2751 { DO_SET_MEM_LO , DS_BGCOL , 0x01aa, 0, 0, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2752 { DO_FUNC , 0 , 0 , 0, 0, 0, fmtSetSPETSCIIData, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2753
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2754 { 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
2755 }
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2756 },
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2757 NULL
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2758 },
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2759
a5c4eb5c7309 Add read support for unknown PETSCII PRG export format (could be earlier version
Matti Hamalainen <ccr@tnsp.org>
parents: 2172
diff changeset
2760 {
2138
fdd0fd7dc0e6 Some more work on charmap and PETSCII support.
Matti Hamalainen <ccr@tnsp.org>
parents: 2135
diff changeset
2761 "pkhu", "petscii.krissz.hu editor (unpacked)", 0x0801, 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
2762 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
2763 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
2764 {
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2138
diff changeset
2765 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
2766 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
2767 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
2768 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
2769 NULL, NULL,
2172
de88333acc44 Move the PETSCII getpixel function to lib64gfx.c and remove the
Matti Hamalainen <ccr@tnsp.org>
parents: 2170
diff changeset
2770 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
2771 {
2196
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2772 { DO_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
2773 { 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
2774
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2775 { 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
2776 { DO_COPY , DS_CHAR_DATA , 0x1801 - 2, 0, 0x0800, 0, NULL, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2777 { DO_FUNC , 0 , 0 , 0, 0 , 0, fmtSetPetsciiKrisszHuData, NULL, DF_NORMAL },
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2778
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2195
diff changeset
2779 { 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
2780 }
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
2781 },
cb4689d9ceed Add initial (and incomplete) support for petscii.krissz.hu PETSCII editor PRG export files.
Matti Hamalainen <ccr@tnsp.org>
parents: 2134
diff changeset
2782 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
2783 },
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2784 };
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2785
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2786 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
2787