Mercurial > hg > dmlib
annotate tools/lib64gfx.h @ 2385:5ffc48a0bebe
Conditionally define DM_ATTR_PRINTF_FMT(xstart, xend) instead of using
__attribute__ ((__format__ (__printf__, (xstart), (xend)))) directly.
Wrap it in an #ifdef check for __MINGW64__ as there are some annoying
issues on that side, which we just suppress now.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 09 Jan 2020 18:51:22 +0200 |
parents | 89cb93184175 |
children | 698ee976fb23 |
rev | line source |
---|---|
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1 /* |
418 | 2 * Functions for reading and converting various restricted |
3 * C64/etc and/or indexed/paletted graphics formats. | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
4 * Programmed and designed by Matti 'ccr' Hamalainen |
2371 | 5 * (C) Copyright 2012-2020 Tecnic Software productions (TNSP) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
6 * |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
7 * Please read file 'COPYING' for information on license and distribution. |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
8 */ |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
9 #ifndef LIB64GFX_H |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
10 #define LIB64GFX_H 1 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
11 |
435 | 12 #include "libgfx.h" |
1465
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1457
diff
changeset
|
13 #include "dmgrowbuf.h" |
435 | 14 |
15 #ifdef __cplusplus | |
16 extern "C" { | |
17 #endif | |
18 | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
19 |
2238
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
20 // Max defines |
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
21 #define D64_MAX_EXTRA_DATA 16 |
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
22 #define D64_MAX_EXTRA_INFO 64 |
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
23 |
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
24 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
25 // Bitmap constants |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
26 #define D64_SCR_WIDTH 320 |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
27 #define D64_SCR_HEIGHT 200 |
2323 | 28 #define D64_SCR_CH_WIDTH (D64_SCR_WIDTH / 8) |
29 #define D64_SCR_CH_HEIGHT (D64_SCR_HEIGHT / 8) | |
2238
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
30 |
2326 | 31 // Full screen size with borders |
2266
ecc17b2e129e
Add constants for "full" C64 screen dimensions, including the border
Matti Hamalainen <ccr@tnsp.org>
parents:
2265
diff
changeset
|
32 #define D64_SCR_FULL_WIDTH 384 |
ecc17b2e129e
Add constants for "full" C64 screen dimensions, including the border
Matti Hamalainen <ccr@tnsp.org>
parents:
2265
diff
changeset
|
33 #define D64_SCR_FULL_HEIGHT 272 |
2326 | 34 |
35 // Define the usually visible area | |
36 #define D64_SCR_MIN_XC 32 | |
37 #define D64_SCR_MAX_XC (D64_SCR_MIN_XC + D64_SCR_WIDTH) | |
38 #define D64_SCR_MIN_YC 50 | |
39 #define D64_SCR_MAX_YC (D64_SCR_MIN_YC + D64_SCR_HEIGHT) | |
40 | |
41 | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
42 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
43 // C64 video screen pixel aspect ratio on PAL |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
44 #define D64_SCR_PAR_XY (0.9365f) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
45 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
46 // Sprite constants |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
47 #define D64_SPR_WIDTH_PX 24 |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
48 #define D64_SPR_HEIGHT_PX 21 |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
49 #define D64_SPR_WIDTH_UT (D64_SPR_WIDTH_PX / 8) // bytes |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
50 #define D64_SPR_HEIGHT_UT D64_SPR_HEIGHT_PX |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
51 #define D64_SPR_SIZE ((D64_SPR_WIDTH_UT * D64_SPR_HEIGHT_UT) + 1) |
2309 | 52 #define D64_MAX_SPRITES 8 // Max sprites per scanline (in simple cases) |
53 | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
54 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
55 // Character constants |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
56 #define D64_CHR_WIDTH_PX 8 |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
57 #define D64_CHR_HEIGHT_PX 8 |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
58 #define D64_CHR_WIDTH_UT 1 // bytes |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
59 #define D64_CHR_HEIGHT_UT 8 // lines |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
60 #define D64_CHR_SIZE (D64_CHR_WIDTH_UT * D64_CHR_HEIGHT_UT) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
61 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
62 // Etc. |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
63 #define D64_NCOLORS 16 |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
64 #define D64_VIDBANK_SIZE (16*1024) |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
65 #define D64_MAX_CHARS 256 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
66 |
922 | 67 |
1637 | 68 // Different supported flags/modes |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
69 enum |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
70 { |
2118
05a6e00b09d0
Change D64_FMT_* MASK constants and how they are used.
Matti Hamalainen <ccr@tnsp.org>
parents:
2116
diff
changeset
|
71 D64_FMT_HIRES = 0x0001, // Hi-res |
05a6e00b09d0
Change D64_FMT_* MASK constants and how they are used.
Matti Hamalainen <ccr@tnsp.org>
parents:
2116
diff
changeset
|
72 D64_FMT_MC = 0x0002, // MultiColor |
05a6e00b09d0
Change D64_FMT_* MASK constants and how they are used.
Matti Hamalainen <ccr@tnsp.org>
parents:
2116
diff
changeset
|
73 D64_FMT_ECM = 0x0003, // ECM mode (applies only to character mode) |
2180
33cf1b330b7b
s/D64_FMT_MASK/D64_FMT_MODE_MASK/g
Matti Hamalainen <ccr@tnsp.org>
parents:
2179
diff
changeset
|
74 D64_FMT_MODE_MASK = 0x000f, |
2116
b49d7cb20a73
Implement initial ECM support in charmap decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
2114
diff
changeset
|
75 |
b49d7cb20a73
Implement initial ECM support in charmap decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
2114
diff
changeset
|
76 D64_FMT_ILACE = 0x0010, // Interlace |
b49d7cb20a73
Implement initial ECM support in charmap decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
2114
diff
changeset
|
77 D64_FMT_FLI = 0x0020, // FLI |
b49d7cb20a73
Implement initial ECM support in charmap decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
2114
diff
changeset
|
78 D64_FMT_CHAR = 0x0040, // Character mode |
b49d7cb20a73
Implement initial ECM support in charmap decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
2114
diff
changeset
|
79 D64_FMT_BORDER = 0x0080, // Uses border area |
2314
87533af8db64
Add format flag for formats that use sprite layer.
Matti Hamalainen <ccr@tnsp.org>
parents:
2309
diff
changeset
|
80 D64_FMT_SPRITES = 0x0100, // Uses sprite layer |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
81 }; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
82 |
1637 | 83 |
84 // Different types of interlace | |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
516
diff
changeset
|
85 enum |
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
516
diff
changeset
|
86 { |
1647
948d6fda722d
Add sanity check for interlaced formats: check that the interlace type flags are set.
Matti Hamalainen <ccr@tnsp.org>
parents:
1645
diff
changeset
|
87 D64_ILACE_NONE = 0x0000, // Not set (invalid for interlaced images) |
1637 | 88 D64_ILACE_RES = 0x0001, // Interlace doubles resolution |
89 D64_ILACE_COLOR = 0x0002, // Uses color mixing | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
90 }; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
91 |
936
5104a7c87d7b
Remove some unused structures, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
931
diff
changeset
|
92 |
2238
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
93 // Different types of interlace |
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
94 enum |
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
95 { |
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
96 D64_FLI_8 = 8, |
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
97 }; |
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
98 |
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
99 |
936
5104a7c87d7b
Remove some unused structures, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
931
diff
changeset
|
100 // Charmode screen memory configuration |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
101 enum |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
102 { |
936
5104a7c87d7b
Remove some unused structures, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
931
diff
changeset
|
103 D64_CHCFG_SCREEN, // Use screen memory |
5104a7c87d7b
Remove some unused structures, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
931
diff
changeset
|
104 D64_CHCFG_LINEAR = 1, // Generate linear pattern so that first line |
5104a7c87d7b
Remove some unused structures, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
931
diff
changeset
|
105 // of chars is 0-39, second 40-79, up to 255. |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
106 }; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
107 |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
108 |
2139
84780a9d8d17
Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
2132
diff
changeset
|
109 // Various extra settings (see DMC64Image::extraInfo[]) |
84780a9d8d17
Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
2132
diff
changeset
|
110 enum |
84780a9d8d17
Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
2132
diff
changeset
|
111 { |
2265
48b48251610a
Refactor how the image "mode/type" is handled. It is still not perfect for
Matti Hamalainen <ccr@tnsp.org>
parents:
2239
diff
changeset
|
112 D64_EI_MODE = 0, // Actual mode, if the format supports several |
48b48251610a
Refactor how the image "mode/type" is handled. It is still not perfect for
Matti Hamalainen <ccr@tnsp.org>
parents:
2239
diff
changeset
|
113 |
2309 | 114 D64_EI_CHAR_CASE, // [CHAR] 0 = upper case, != lower case |
115 D64_EI_CHAR_CUSTOM, // [CHAR] 0 = ROM charset, != custom charset | |
2238
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
116 |
2309 | 117 D64_EI_FLI_TYPE, // FLI type (see D64_FLI_*) |
118 D64_EI_ILACE_TYPE, // Interlace type (see D64_ILACE_*) | |
2139
84780a9d8d17
Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
2132
diff
changeset
|
119 }; |
84780a9d8d17
Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
2132
diff
changeset
|
120 |
84780a9d8d17
Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
2132
diff
changeset
|
121 |
1931
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1923
diff
changeset
|
122 // Image <-> bitmap conversion dithering |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1923
diff
changeset
|
123 enum |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1923
diff
changeset
|
124 { |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1923
diff
changeset
|
125 D64_DITH_NONE = 0, // No dithering |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1923
diff
changeset
|
126 }; |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1923
diff
changeset
|
127 |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1923
diff
changeset
|
128 |
1668
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
129 // Different enc/dec operation types (op->type) |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
130 enum |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
131 { |
1668
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
132 DO_COPY, // Perform copy between memory (from/to offset) and subject |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
133 DO_SET_MEM, // Set subject value or fill subject memory area to byte value from offset |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
134 DO_SET_OP, // Like above but value from op->offs field instead |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
135 |
1726
f9128665a47e
Implement operator types DO_SET_MEM_HI and DO_SET_MEM_LO. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1722
diff
changeset
|
136 DO_SET_MEM_HI, // Copy one byte value like DO_SET_MEM, but high nibble only |
f9128665a47e
Implement operator types DO_SET_MEM_HI and DO_SET_MEM_LO. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1722
diff
changeset
|
137 DO_SET_MEM_LO, // Like above, but low nibble |
f9128665a47e
Implement operator types DO_SET_MEM_HI and DO_SET_MEM_LO. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1722
diff
changeset
|
138 |
1922
3c6f638ce402
Remove the useless distinction of DO_ENC_FUNC and DO_DEC_FUNC, as the
Matti Hamalainen <ccr@tnsp.org>
parents:
1916
diff
changeset
|
139 DO_FUNC, // Execute specified decoding / encoding function |
1668
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
140 |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
141 DO_CHAR_CFG, // Set character mode configuration |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
142 |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
143 DO_LAST, // Last opcode, end processing |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
144 }; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
145 |
512
95a6b6af53f1
Add some structures and enums for future.
Matti Hamalainen <ccr@tnsp.org>
parents:
511
diff
changeset
|
146 |
2318 | 147 // "Subjects" of operations (DMC64EncDecOp::subject) |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
148 enum |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
149 { |
1668
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
150 DS_COLOR_RAM, |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
151 DS_BITMAP_RAM, |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
152 DS_SCREEN_RAM, |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
153 DS_EXTRA_DATA, |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
154 DS_CHAR_DATA, |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
155 |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
156 DS_D020, |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
157 DS_BGCOL, |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
158 DS_D021, |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
159 DS_D022, |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
160 DS_D023, |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
161 DS_D024, |
1852
219417325036
Split dmC64GetOpMemBlockAndName() into dmC64GetOpMemBlock() and
Matti Hamalainen <ccr@tnsp.org>
parents:
1846
diff
changeset
|
162 |
2238
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
163 DS_EXTRA_INFO, |
2224
a36c81c3df85
Make color interlace type generate a mixed palette instead of using special
Matti Hamalainen <ccr@tnsp.org>
parents:
2223
diff
changeset
|
164 |
1852
219417325036
Split dmC64GetOpMemBlockAndName() into dmC64GetOpMemBlock() and
Matti Hamalainen <ccr@tnsp.org>
parents:
1846
diff
changeset
|
165 DS_LAST |
917
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
166 }; |
df3a74f230d9
Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
916
diff
changeset
|
167 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
168 |
2318 | 169 // Operation flags (DMC64EncDecOp::flags) |
2196
28871f500e84
Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents:
2180
diff
changeset
|
170 enum |
28871f500e84
Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents:
2180
diff
changeset
|
171 { |
28871f500e84
Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents:
2180
diff
changeset
|
172 DF_NORMAL = 0xffff, |
28871f500e84
Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents:
2180
diff
changeset
|
173 DF_DECODE = 0x0001, |
28871f500e84
Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents:
2180
diff
changeset
|
174 DF_ENCODE = 0x0002, |
28871f500e84
Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents:
2180
diff
changeset
|
175 }; |
28871f500e84
Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents:
2180
diff
changeset
|
176 |
28871f500e84
Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents:
2180
diff
changeset
|
177 |
2327
c8c58147e6e5
Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents:
2326
diff
changeset
|
178 // Sprite flags (DMC64Sprite::flags) |
c8c58147e6e5
Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents:
2326
diff
changeset
|
179 enum |
c8c58147e6e5
Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents:
2326
diff
changeset
|
180 { |
c8c58147e6e5
Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents:
2326
diff
changeset
|
181 D64_SPRF_MC = 0x0001, |
c8c58147e6e5
Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents:
2326
diff
changeset
|
182 D64_SPRF_X_EXPAND = 0x0002, |
2342
a5c68b0d6e10
Fix D64_SPRF_Y_EXPAND enum value.
Matti Hamalainen <ccr@tnsp.org>
parents:
2340
diff
changeset
|
183 D64_SPRF_Y_EXPAND = 0x0004, |
2327
c8c58147e6e5
Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents:
2326
diff
changeset
|
184 }; |
c8c58147e6e5
Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents:
2326
diff
changeset
|
185 |
c8c58147e6e5
Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents:
2326
diff
changeset
|
186 |
1588
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
187 typedef struct |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
188 { |
2201
9f3fb4004c20
Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2200
diff
changeset
|
189 char *name; |
2203
b259312ddb59
Add description field to DMC64Palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
2201
diff
changeset
|
190 char *desc; |
2201
9f3fb4004c20
Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2200
diff
changeset
|
191 DMColor colors[D64_NCOLORS]; |
9f3fb4004c20
Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2200
diff
changeset
|
192 } DMC64Palette; |
9f3fb4004c20
Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2200
diff
changeset
|
193 |
9f3fb4004c20
Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2200
diff
changeset
|
194 |
9f3fb4004c20
Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2200
diff
changeset
|
195 typedef struct |
9f3fb4004c20
Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2200
diff
changeset
|
196 { |
2318 | 197 int dither; // Dither mode (D64_DITH_*) |
2335 | 198 BOOL aspect; // Render using pixel aspectX/aspectY |
2201
9f3fb4004c20
Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2200
diff
changeset
|
199 |
2318 | 200 DMPalette *pal; // Use this palette |
201 DMC64Palette *cpal; // If ^pal == NULL, use this C64 palette | |
1931
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1923
diff
changeset
|
202 } DMC64ImageConvSpec; |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1923
diff
changeset
|
203 |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1923
diff
changeset
|
204 |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1923
diff
changeset
|
205 typedef struct |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1923
diff
changeset
|
206 { |
1588
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
207 Uint8 *data; |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
208 size_t size; |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
209 } DMC64MemBlock; |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
210 |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
211 |
1668
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
212 typedef struct |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
213 { |
2309 | 214 int xc, yc; // Sprite coordinates (XXX TODO: borders etc.) |
2327
c8c58147e6e5
Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents:
2326
diff
changeset
|
215 int flags; // D64_SPRF_* flags |
2309 | 216 int color; // Color |
217 int sprnum; // Physical sprite number for priority checking | |
2318 | 218 |
2309 | 219 Uint8 *data; // "const" pointer to sprite data, do not deallocate |
1668
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
220 } DMC64Sprite; |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
221 |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
222 |
1934 | 223 typedef struct _DMC64ImageCommonFormat DMC64ImageCommonFormat; |
224 typedef struct _DMC64ImageFormat DMC64ImageFormat; | |
225 | |
226 | |
1374
9edb17aa4a0a
Forward declare typedef struct _DMC64Image;
Matti Hamalainen <ccr@tnsp.org>
parents:
1373
diff
changeset
|
227 typedef struct _DMC64Image |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
228 { |
1947
8896d5676f1b
Architectural change: remove some duplicated variables from DMC64Image
Matti Hamalainen <ccr@tnsp.org>
parents:
1935
diff
changeset
|
229 DMC64ImageCommonFormat *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
|
230 int nblocks; // Number of internal blocks used |
1482
df6dacb48970
Rename some struct members, and sanitize handling of DMC64Image allocation more.
Matti Hamalainen <ccr@tnsp.org>
parents:
1467
diff
changeset
|
231 |
2179
8d53da5bf067
Rename DMC64Image::nbanks to nblocks, which reflects better what it does.
Matti Hamalainen <ccr@tnsp.org>
parents:
2176
diff
changeset
|
232 // Bitmaps, color RAM, screen, etc. blocks * nblocks |
1588
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
233 // Not all of them may be allocated |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
234 DMC64MemBlock |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
235 *color, |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
236 *bitmap, |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
237 *screen, |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
238 *charData; |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
926
diff
changeset
|
239 |
1588
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
240 // Other standard colours |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
241 Uint8 d020, bgcolor, d022, d023, d024; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
242 |
1588
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
243 // Extra data areas used by some formats, |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
244 // for example raster colours might be stored |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2121
diff
changeset
|
245 DMC64MemBlock extraData[D64_MAX_EXTRA_DATA]; |
1376
67ae449cf9e1
More work on making various FLI etc. format decoding more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1375
diff
changeset
|
246 |
2316 | 247 // Extra information / settings |
2139
84780a9d8d17
Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents:
2132
diff
changeset
|
248 // See D64_EI_* constants. |
2239
adb0480f6ebd
Change DMC64Image::extraInfo[] type from Uint8 to int.
Matti Hamalainen <ccr@tnsp.org>
parents:
2238
diff
changeset
|
249 int extraInfo[D64_MAX_EXTRA_INFO]; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
250 } DMC64Image; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
251 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
252 |
2343
94a653883a32
Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents:
2342
diff
changeset
|
253 typedef struct |
94a653883a32
Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents:
2342
diff
changeset
|
254 { |
94a653883a32
Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents:
2342
diff
changeset
|
255 Uint8 *col; |
94a653883a32
Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents:
2342
diff
changeset
|
256 } DMC64ScanLine; |
94a653883a32
Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents:
2342
diff
changeset
|
257 |
94a653883a32
Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents:
2342
diff
changeset
|
258 |
94a653883a32
Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents:
2342
diff
changeset
|
259 typedef int (*DMC64GetPixelFunc)(DMC64ScanLine *scan, |
2340 | 260 const DMC64Image *img, const int rasterX, const int rasterY); |
2332 | 261 |
262 | |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
507
diff
changeset
|
263 typedef struct _DMC64EncDecOp |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
264 { |
1668
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
265 int type; // Operation type (DO_*) |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
266 int subject; // Operation "subject" (DS_*) |
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
267 |
2238
5db6e0b63b35
Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents:
2224
diff
changeset
|
268 int offs; // Offset in "memory" |
1846
88cef7758303
Implement data block offset in certain DMC64EncDecOps. This allows us to
Matti Hamalainen <ccr@tnsp.org>
parents:
1826
diff
changeset
|
269 int bank; // Bank number or extradata index |
88cef7758303
Implement data block offset in certain DMC64EncDecOps. This allows us to
Matti Hamalainen <ccr@tnsp.org>
parents:
1826
diff
changeset
|
270 size_t size; // Size of data (0 for "default") |
2322
5abb81daadd5
Rename DMC64EncDecOp::offs2 to blkoffs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2319
diff
changeset
|
271 size_t blkoffs; // Offset in data-block |
1668
1741717b1ae5
Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
1660
diff
changeset
|
272 |
2114
27cf33c3a646
Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents:
2113
diff
changeset
|
273 int (*decFunction)(const struct _DMC64EncDecOp *op, DMC64Image *img, const DMGrowBuf *buf, const DMC64ImageCommonFormat *fmt); |
27cf33c3a646
Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents:
2113
diff
changeset
|
274 int (*encFunction)(const struct _DMC64EncDecOp *op, DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageCommonFormat *fmt); |
2196
28871f500e84
Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents:
2180
diff
changeset
|
275 |
28871f500e84
Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents:
2180
diff
changeset
|
276 int flags; // Operation flags (DF_*) |
510
43ea59887c69
Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents:
507
diff
changeset
|
277 } DMC64EncDecOp; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
278 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
279 |
2176
8e6713705786
Reduce number of max enc/dec ops from 64 to 32, this reduces produced binary sizes by 100kB :P
Matti Hamalainen <ccr@tnsp.org>
parents:
2175
diff
changeset
|
280 #define D64_MAX_ENCDEC_OPS 32 |
1592
91d1bb571fca
Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents:
1591
diff
changeset
|
281 typedef DMC64EncDecOp DMC64EncDecOpList[D64_MAX_ENCDEC_OPS]; |
91d1bb571fca
Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents:
1591
diff
changeset
|
282 |
91d1bb571fca
Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents:
1591
diff
changeset
|
283 |
1934 | 284 typedef struct _DMC64ImageCommonFormat |
1775
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
285 { |
2265
48b48251610a
Refactor how the image "mode/type" is handled. It is still not perfect for
Matti Hamalainen <ccr@tnsp.org>
parents:
2239
diff
changeset
|
286 int mode, // Format mode/type flags, see D64_FMT_* |
1935 | 287 width, height, // Width and height in pixels |
2056
c27ed6465022
Add pixel aspect ratio information for C64 formats. Not used yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
1984
diff
changeset
|
288 chWidth, chHeight, // Width and height in charblocks |
2335 | 289 aspectX, aspectY; // Pixel aspectX/Y (x=2 for multicolor, y=1 always) |
1775
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
290 |
2325
ddd29161d258
Add argument names to prototypes.
Matti Hamalainen <ccr@tnsp.org>
parents:
2324
diff
changeset
|
291 int (*convertFrom)(DMImage *dst, const DMC64Image *src, const DMC64ImageConvSpec *spec); |
ddd29161d258
Add argument names to prototypes.
Matti Hamalainen <ccr@tnsp.org>
parents:
2324
diff
changeset
|
292 int (*convertTo)(DMC64Image *dst, const DMImage *src, const DMC64ImageFormat *fmt, const DMC64ImageConvSpec *spec); |
1775
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
293 |
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
294 DMC64GetPixelFunc getPixel; |
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
295 |
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
296 DMC64EncDecOpList encdecOps; |
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
297 } DMC64ImageCommonFormat; |
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
298 |
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
299 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
300 typedef struct _DMC64ImageFormat |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
301 { |
922 | 302 char *fext; // Filename extension |
303 char *name; // Format description/name | |
304 | |
511
4cdcaeb68b54
Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents:
510
diff
changeset
|
305 size_t addr; // Loading address (0 if no loading address) |
1495 | 306 size_t size; // Size, including loading address. Only used in probing and encoding. |
924
732787cccca8
Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
923
diff
changeset
|
307 |
2265
48b48251610a
Refactor how the image "mode/type" is handled. It is still not perfect for
Matti Hamalainen <ccr@tnsp.org>
parents:
2239
diff
changeset
|
308 int flags; // DM_FMT_* flags (read/write/broken/etc.), see libgfx.h |
1545
3b613fcbf3ff
Improve how format read/write capabilities are marked and shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
1537
diff
changeset
|
309 |
1780
5ea4713e9e0f
Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents:
1775
diff
changeset
|
310 int (*probe)(const DMGrowBuf *buf, const DMC64ImageFormat *fmt); |
1442 | 311 |
1775
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
312 int (*decode)(DMC64Image *img, const DMGrowBuf *buf, const DMC64ImageFormat *fmt); |
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
313 int (*encode)(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt); |
1442 | 314 |
1775
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
315 DMC64ImageCommonFormat formatDef, *format; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
316 } DMC64ImageFormat; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
317 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
318 |
1637 | 319 // |
2148
487157934904
Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents:
2139
diff
changeset
|
320 // Compression types |
1637 | 321 // |
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:
1647
diff
changeset
|
322 enum |
9233da9de92c
Refactor RLE encoding a bit, and add support for 16bit run counts and make things more configurable.
Matti Hamalainen <ccr@tnsp.org>
parents:
1647
diff
changeset
|
323 { |
9233da9de92c
Refactor RLE encoding a bit, and add support for 16bit run counts and make things more configurable.
Matti Hamalainen <ccr@tnsp.org>
parents:
1647
diff
changeset
|
324 DM_COMP_RLE_MARKER = 1, // RLE with a separate marker byte |
9233da9de92c
Refactor RLE encoding a bit, and add support for 16bit run counts and make things more configurable.
Matti Hamalainen <ccr@tnsp.org>
parents:
1647
diff
changeset
|
325 DM_COMP_RLE_MASK = 2, // RLE that has marker bits and lower part acts as run length |
9233da9de92c
Refactor RLE encoding a bit, and add support for 16bit run counts and make things more configurable.
Matti Hamalainen <ccr@tnsp.org>
parents:
1647
diff
changeset
|
326 }; |
9233da9de92c
Refactor RLE encoding a bit, and add support for 16bit run counts and make things more configurable.
Matti Hamalainen <ccr@tnsp.org>
parents:
1647
diff
changeset
|
327 |
2148
487157934904
Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents:
2139
diff
changeset
|
328 |
487157934904
Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents:
2139
diff
changeset
|
329 // Compression flags |
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:
1647
diff
changeset
|
330 enum |
9233da9de92c
Refactor RLE encoding a bit, and add support for 16bit run counts and make things more configurable.
Matti Hamalainen <ccr@tnsp.org>
parents:
1647
diff
changeset
|
331 { |
1660
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
332 DM_RLE_BYTE_RUNS = 0x0001, // Uses one-byte run lengths |
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
333 DM_RLE_WORD_RUNS = 0x0002, // Uses two-byte (word) run lengths |
2148
487157934904
Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents:
2139
diff
changeset
|
334 DM_RLE_RUNS_MASK = 0x000f, |
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:
1647
diff
changeset
|
335 |
2148
487157934904
Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents:
2139
diff
changeset
|
336 DM_RLE_ORDER_1 = 0x0010, // Order: <marker>, <count/run length>, <data> |
487157934904
Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents:
2139
diff
changeset
|
337 DM_RLE_ORDER_2 = 0x0020, // Order: <marker>, <data>, <count/run length> |
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:
1647
diff
changeset
|
338 DM_RLE_ORDER_MASK = 0x00f0, |
1707
a0986cfd6f9d
More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents:
1668
diff
changeset
|
339 |
1786
52e90130453b
Add descriptive comments to some of RLE decoder flags that were missing "documentation".
Matti Hamalainen <ccr@tnsp.org>
parents:
1783
diff
changeset
|
340 DM_RLE_BACKWARDS_INPUT = 0x0100, // Input is read backwards |
52e90130453b
Add descriptive comments to some of RLE decoder flags that were missing "documentation".
Matti Hamalainen <ccr@tnsp.org>
parents:
1783
diff
changeset
|
341 DM_RLE_BACKWARDS_OUTPUT = 0x0200, // Output is written backwards |
52e90130453b
Add descriptive comments to some of RLE decoder flags that were missing "documentation".
Matti Hamalainen <ccr@tnsp.org>
parents:
1783
diff
changeset
|
342 DM_RLE_ZERO_COUNT_MAX = 0x0400, // Zero "count" / run length value is max run (2^8, 2^16) |
1720
77a4d8fab5cc
Add output buffer cropping to dmFinishRLEBuffers() and the flags and fields to DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents:
1719
diff
changeset
|
343 |
77a4d8fab5cc
Add output buffer cropping to dmFinishRLEBuffers() and the flags and fields to DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents:
1719
diff
changeset
|
344 DM_OUT_CROP_NONE = 0x0000, |
77a4d8fab5cc
Add output buffer cropping to dmFinishRLEBuffers() and the flags and fields to DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents:
1719
diff
changeset
|
345 DM_OUT_CROP_START = 0x1000, |
77a4d8fab5cc
Add output buffer cropping to dmFinishRLEBuffers() and the flags and fields to DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents:
1719
diff
changeset
|
346 DM_OUT_CROP_END = 0x2000, |
77a4d8fab5cc
Add output buffer cropping to dmFinishRLEBuffers() and the flags and fields to DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents:
1719
diff
changeset
|
347 DM_OUT_CROP_MASK = 0xf000, |
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:
1647
diff
changeset
|
348 }; |
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
|
349 |
3265175b24d2
Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
1503
diff
changeset
|
350 |
3265175b24d2
Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
1503
diff
changeset
|
351 typedef struct |
3265175b24d2
Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
1503
diff
changeset
|
352 { |
1711
4fd94bf558b3
Add function name field to DMCompParams struct and set it in places where we use DMCompParams.
Matti Hamalainen <ccr@tnsp.org>
parents:
1709
diff
changeset
|
353 char *func; |
1720
77a4d8fab5cc
Add output buffer cropping to dmFinishRLEBuffers() and the flags and fields to DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents:
1719
diff
changeset
|
354 size_t cropOutLen; |
2148
487157934904
Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents:
2139
diff
changeset
|
355 int type; // DM_COMP_* |
487157934904
Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents:
2139
diff
changeset
|
356 int flags; // |
1720
77a4d8fab5cc
Add output buffer cropping to dmFinishRLEBuffers() and the flags and fields to DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents:
1719
diff
changeset
|
357 |
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:
1647
diff
changeset
|
358 Uint8 |
1660
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
359 // DM_COMP_RLE_MARKER mode |
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
360 rleMarkerB, // Marker byte for byte length runs (if DM_RLE_BYTE_RUNS used) |
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
361 rleMarkerW, // Marker byte for word length runs (if DM_RLE_WORD_RUNS used) |
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
362 |
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
363 // DM_COMP_RLE_MASK mode |
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
364 rleMarkerBits, |
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
365 rleMarkerMask, // Mask bits for marker: data & rleMarkerMask == rleMarkerBits |
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
366 rleCountMask; // Mask bits for length: count = data & rleCountMask |
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
367 |
1707
a0986cfd6f9d
More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents:
1668
diff
changeset
|
368 unsigned int |
1660
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
369 // Minimum and maximum run lengths |
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
370 rleMinCountB, |
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
371 rleMinCountW, |
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
372 rleMaxCountB, |
7555c8803529
More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents:
1650
diff
changeset
|
373 rleMaxCountW; |
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 } DMCompParams; |
3265175b24d2
Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
1503
diff
changeset
|
375 |
3265175b24d2
Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents:
1503
diff
changeset
|
376 |
1503
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
377 // |
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
378 // Global variables |
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
379 // |
1775
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
380 extern DMC64ImageFormat dmC64ImageFormats[]; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
381 extern const int ndmC64ImageFormats; |
2200
dcd26cdc395e
Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents:
2196
diff
changeset
|
382 extern DMC64ImageFormat **dmC64ImageFormatsSorted; |
dcd26cdc395e
Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents:
2196
diff
changeset
|
383 |
dcd26cdc395e
Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents:
2196
diff
changeset
|
384 |
dcd26cdc395e
Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents:
2196
diff
changeset
|
385 // |
dcd26cdc395e
Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents:
2196
diff
changeset
|
386 // Library init/close |
dcd26cdc395e
Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents:
2196
diff
changeset
|
387 // |
dcd26cdc395e
Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents:
2196
diff
changeset
|
388 int dmLib64GFXInit(void); |
dcd26cdc395e
Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents:
2196
diff
changeset
|
389 void dmLib64GFXClose(void); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
390 |
1488
c71b6c5204af
Factor the C64 bitmap image format info dump function to lib64gfx and use it from 64vw.
Matti Hamalainen <ccr@tnsp.org>
parents:
1486
diff
changeset
|
391 |
1503
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
392 // |
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
393 // Miscellaneous functions |
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
394 // |
1780
5ea4713e9e0f
Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents:
1775
diff
changeset
|
395 int dmC64ProbeBMP(const DMGrowBuf *buf, const DMC64ImageFormat **fmt); |
1774
88354355b8e1
Move dmC64ProbeBMP() to more logical place in the source.
Matti Hamalainen <ccr@tnsp.org>
parents:
1764
diff
changeset
|
396 |
2208
90ec1ec89c56
Revamp the palette handling in lib64gfx somewhat, add helper functions to
Matti Hamalainen <ccr@tnsp.org>
parents:
2206
diff
changeset
|
397 int dmC64PaletteFromC64Palette(DMPalette **ppal, const DMC64Palette *cpal, const BOOL mixed); |
90ec1ec89c56
Revamp the palette handling in lib64gfx somewhat, add helper functions to
Matti Hamalainen <ccr@tnsp.org>
parents:
2206
diff
changeset
|
398 int dmC64SetImagePalette(DMImage *img, const DMC64ImageConvSpec *spec, const BOOL mixed); |
1732
07111a60cd4e
Add dmSetMixedColorC64Palette() for setting a 256 entry "mixed color"
Matti Hamalainen <ccr@tnsp.org>
parents:
1726
diff
changeset
|
399 |
1780
5ea4713e9e0f
Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents:
1775
diff
changeset
|
400 BOOL dmCompareAddr16(const DMGrowBuf *buf, const size_t offs, const Uint16 addr); |
1588
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
401 |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
402 int dmC64MemBlockAlloc(DMC64MemBlock *blk, const size_t size); |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
403 int dmC64MemBlockCopy(DMC64MemBlock *dst, const DMC64MemBlock *src); |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
404 void dmC64MemBlockFree(DMC64MemBlock *blk); |
ca087c0cc9c4
Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents:
1586
diff
changeset
|
405 |
2205 | 406 // C64 bitmap image allocation/freeing |
1378
c465860e44ed
Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents:
1376
diff
changeset
|
407 DMC64Image *dmC64ImageAlloc(const DMC64ImageFormat *fmt); |
931
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
926
diff
changeset
|
408 void dmC64ImageFree(DMC64Image *img); |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
926
diff
changeset
|
409 |
2270d7f3af77
Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents:
926
diff
changeset
|
410 |
1503
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
411 // Encoding and decoding of formats and images |
2324 | 412 int dmC64ConvertCSDataToImage(DMImage *img, |
413 const int xoffs, const int yoffs, const Uint8 *buf, | |
414 const int width, const int height, const BOOL multicolor, | |
415 const int *colors); | |
1644 | 416 |
2205 | 417 int dmC64ImageGetNumBlocks(const DMC64ImageFormat *fmt); |
418 | |
1852
219417325036
Split dmC64GetOpMemBlockAndName() into dmC64GetOpMemBlock() and
Matti Hamalainen <ccr@tnsp.org>
parents:
1846
diff
changeset
|
419 const char *dmC64GetOpSubjectName(const int subject); |
2108
5f8f170f8774
Change dmC64GetOpMemBlock() function API.
Matti Hamalainen <ccr@tnsp.org>
parents:
2094
diff
changeset
|
420 const DMC64MemBlock * dmC64GetOpMemBlock(const DMC64Image *img, const int subject, const int bank); |
1644 | 421 int dmC64SanityCheckEncDecOp(const int i, const DMC64EncDecOp *op, const DMC64Image *img); |
2319 | 422 int dmC64MemBlockAllocSubj(DMC64Image *img, const int subject, const int bank); |
1916
34ba8e2d2dd7
Split dmC64GetOpSize() to dmC64GetSubjectSize() and dmC64GetOpSubjectSize().
Matti Hamalainen <ccr@tnsp.org>
parents:
1859
diff
changeset
|
423 |
1933
c5a46cb4cce5
Change DMC64ImageFormat parameter of dmC64GetSubjectSize() and
Matti Hamalainen <ccr@tnsp.org>
parents:
1932
diff
changeset
|
424 size_t dmC64GetSubjectSize(const int subject, const DMC64ImageCommonFormat *fmt); |
c5a46cb4cce5
Change DMC64ImageFormat parameter of dmC64GetSubjectSize() and
Matti Hamalainen <ccr@tnsp.org>
parents:
1932
diff
changeset
|
425 size_t dmC64GetOpSubjectSize(const DMC64EncDecOp *op, const DMC64ImageCommonFormat *fmt); |
1644 | 426 |
1442 | 427 |
1707
a0986cfd6f9d
More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents:
1668
diff
changeset
|
428 int dmC64DecodeGenericBMP(DMC64Image *img, const DMGrowBuf *buf, const DMC64ImageFormat *fmt); |
1499
32640e1934d5
Simplify some encoding bits.
Matti Hamalainen <ccr@tnsp.org>
parents:
1495
diff
changeset
|
429 int dmC64EncodeGenericBMP(const BOOL allocate, DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt); |
537
32d9e67da189
Rename generic probing function to match the style of other lib64gfx functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
534
diff
changeset
|
430 |
2223
5477e792def3
Remove useless DMC64ImageFormat parameter from some conversion functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
2222
diff
changeset
|
431 int dmC64ConvertBMP2Image(DMImage **pdst, const DMC64Image *src, const DMC64ImageConvSpec *spec); |
1931
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1923
diff
changeset
|
432 int dmC64ConvertImage2BMP(DMC64Image **pdst, const DMImage *src, const DMC64ImageFormat *fmt, const DMC64ImageConvSpec *spec); |
1446 | 433 |
1707
a0986cfd6f9d
More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents:
1668
diff
changeset
|
434 int dmC64DecodeBMP(DMC64Image **img, const DMGrowBuf *buf, const size_t probeOffs, const size_t loadOffs, const DMC64ImageFormat **fmt, const DMC64ImageFormat *forced); |
1467
32203356c652
Add some new functions that are mostly just stubs and not working tho.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
435 int dmC64EncodeBMP(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt); |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
418
diff
changeset
|
436 |
2329
0085ce04788b
Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents:
2327
diff
changeset
|
437 int dmGenericRLEAnalyze(const DMGrowBuf *buf, DMCompParams *cfg); |
1503
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
438 |
1713
0a9110b4d036
Add few RLE helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
1711
diff
changeset
|
439 void dmSetupRLEBuffers(DMGrowBuf *dst, DMGrowBuf *src, const DMCompParams *cfg); |
0a9110b4d036
Add few RLE helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
1711
diff
changeset
|
440 void dmFinishRLEBuffers(DMGrowBuf *dst, DMGrowBuf *src, const DMCompParams *cfg); |
1775
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
441 |
1713
0a9110b4d036
Add few RLE helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
1711
diff
changeset
|
442 int dmGenericRLEOutputRun(DMGrowBuf *dst, const DMCompParams *cfg, const Uint8 data, const unsigned int count); |
1719
8f47bd264458
Make dmEncodeGenericRLESequence() a public function.
Matti Hamalainen <ccr@tnsp.org>
parents:
1713
diff
changeset
|
443 int dmEncodeGenericRLESequence(DMGrowBuf *dst, const Uint8 data, const unsigned int count, const DMCompParams *cfg); |
8f47bd264458
Make dmEncodeGenericRLESequence() a public function.
Matti Hamalainen <ccr@tnsp.org>
parents:
1713
diff
changeset
|
444 |
1707
a0986cfd6f9d
More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents:
1668
diff
changeset
|
445 int dmDecodeGenericRLE(DMGrowBuf *dst, const DMGrowBuf *src, const DMCompParams *cfg); |
a0986cfd6f9d
More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents:
1668
diff
changeset
|
446 int dmDecodeGenericRLEAlloc(DMGrowBuf *dst, const DMGrowBuf *src, const DMCompParams *cfg); |
1503
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
447 |
1707
a0986cfd6f9d
More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents:
1668
diff
changeset
|
448 int dmEncodeGenericRLE(DMGrowBuf *dst, const DMGrowBuf *src, const DMCompParams *cfg); |
a0986cfd6f9d
More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents:
1668
diff
changeset
|
449 int dmEncodeGenericRLEAlloc(DMGrowBuf *dst, const DMGrowBuf *src, const DMCompParams *cfg); |
1503
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
450 |
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
451 |
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
452 // |
2129
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
453 // Macros for defining variables used in getpixel functions |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
454 // |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
455 #define DM_C64_GENERIC_SC_PIXEL_DEFS(ximg) \ |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
456 const int \ |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
457 x = rasterX / 8, \ |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
458 y = rasterY / 8, \ |
2306
e798a41f27a5
Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents:
2266
diff
changeset
|
459 yb = rasterY & 7, \ |
2129
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
460 yoffs = y * ximg->fmt->chWidth, \ |
2306
e798a41f27a5
Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents:
2266
diff
changeset
|
461 bmoffs = yoffs * 8 + yb + (x * 8), \ |
2129
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
462 scroffs = yoffs + x, \ |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
463 vshift = 7 - (rasterX & 7); |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
464 |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
465 |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
466 #define DM_C64_GENERIC_MC_PIXEL_DEFS(ximg) \ |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
467 const int \ |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
468 x = rasterX / 4, \ |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
469 y = rasterY / 8, \ |
2306
e798a41f27a5
Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents:
2266
diff
changeset
|
470 yb = rasterY & 7, \ |
2129
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
471 yoffs = y * (ximg)->fmt->chWidth, \ |
2306
e798a41f27a5
Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents:
2266
diff
changeset
|
472 bmoffs = yoffs * 8 + yb + (x * 8), \ |
2129
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
473 scroffs = yoffs + x, \ |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
474 vshift = 6 - ((rasterX * 2) & 6); |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
475 |
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
476 |
2132
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
477 #define DM_C64_GENERIC_CHAR_PIXEL(ximg) \ |
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
478 const int \ |
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
479 x = rasterX / 8, \ |
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
480 y = rasterY / 8, \ |
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
481 scroffs = y * (ximg)->fmt->chWidth + x; \ |
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
482 |
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
483 |
2129
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
484 // |
2345
fe025c461760
Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents:
2343
diff
changeset
|
485 // Pixel format helpers |
1503
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
486 // |
2345
fe025c461760
Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents:
2343
diff
changeset
|
487 int dmC64GetGenericSCPixel(Uint8 *col, |
1503
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
488 const DMC64Image *img, const int bmoffs, const int scroffs, |
2345
fe025c461760
Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents:
2343
diff
changeset
|
489 const int vshift, const int vbank, const int bitmap); |
2129
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
490 |
2345
fe025c461760
Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents:
2343
diff
changeset
|
491 int dmC64GetGenericMCPixel(Uint8 *col, |
1503
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
492 const DMC64Image *img, const int bmoffs, const int scroffs, |
2129
2129d4ac6f45
Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
493 const int vshift, const int vbank, const int bitmap, |
2345
fe025c461760
Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents:
2343
diff
changeset
|
494 const int cbank, const int bgcolor); |
1503
c7b9ef56319b
Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents:
1499
diff
changeset
|
495 |
2345
fe025c461760
Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents:
2343
diff
changeset
|
496 int dmC64GetGenericCharSCPixel(Uint8 *col, |
2132
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
497 const DMC64Image *img, const int scroffs, const int rasterX, |
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
498 const int chrbank, const size_t chroffs, const int chr, |
2345
fe025c461760
Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents:
2343
diff
changeset
|
499 const int cbank, const int bgcolor); |
2132
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
500 |
2345
fe025c461760
Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents:
2343
diff
changeset
|
501 int dmC64GetGenericCharMCPixel(Uint8 *col, |
2132
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
502 const DMC64Image *img, const int scroffs, const int rasterX, |
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
503 const int chrbank, const size_t chroffs, const int chr, |
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
504 const int cbank, const int bgcolor, |
2345
fe025c461760
Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents:
2343
diff
changeset
|
505 const int bgd022, const int bgd023); |
2132
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
506 |
2345
fe025c461760
Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents:
2343
diff
changeset
|
507 int dmC64GetGenericCharECMPixel(Uint8 *col, |
2132
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
508 const DMC64Image *img, const int scroffs, const int rasterX, |
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
509 const int chrbank, const size_t chroffs, const int chr, |
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
510 const int cbank, const int bgcolor, |
2345
fe025c461760
Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents:
2343
diff
changeset
|
511 const int bgd022, const int bgd023, const int bgd024); |
2132
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
512 |
6528a1398e8e
Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents:
2129
diff
changeset
|
513 |
1591
3cc7b2aadda3
Add inline helper function fmtGetEncDecOp() and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1588
diff
changeset
|
514 static inline const DMC64EncDecOp * fmtGetEncDecOp(const DMC64ImageFormat *fmt, const int index) |
3cc7b2aadda3
Add inline helper function fmtGetEncDecOp() and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1588
diff
changeset
|
515 { |
1775
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1774
diff
changeset
|
516 return &fmt->format->encdecOps[index]; |
1591
3cc7b2aadda3
Add inline helper function fmtGetEncDecOp() and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1588
diff
changeset
|
517 } |
3cc7b2aadda3
Add inline helper function fmtGetEncDecOp() and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1588
diff
changeset
|
518 |
3cc7b2aadda3
Add inline helper function fmtGetEncDecOp() and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1588
diff
changeset
|
519 |
435 | 520 #ifdef __cplusplus |
521 } | |
522 #endif | |
523 | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
524 #endif // LIB64GFX_H |