annotate tools/lib64gfx.h @ 2634:f3c7115cbf85 default tip

Fix verbose build echos.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 29 Feb 2024 21:47:31 +0200
parents 8315e713c35e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
b6a1dc3bd2c3 Update file description.
Matti Hamalainen <ccr@tnsp.org>
parents: 410
diff changeset
2 * Functions for reading and converting various restricted
b6a1dc3bd2c3 Update file description.
Matti Hamalainen <ccr@tnsp.org>
parents: 410
diff changeset
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
2608
8315e713c35e Bump copyright years.
Matti Hamalainen <ccr@tnsp.org>
parents: 2606
diff changeset
5 * (C) Copyright 2012-2023 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
e4a3f183e463 Modularize some more.
Matti Hamalainen <ccr@tnsp.org>
parents: 419
diff changeset
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
e4a3f183e463 Modularize some more.
Matti Hamalainen <ccr@tnsp.org>
parents: 419
diff changeset
14
e4a3f183e463 Modularize some more.
Matti Hamalainen <ccr@tnsp.org>
parents: 419
diff changeset
15 #ifdef __cplusplus
e4a3f183e463 Modularize some more.
Matti Hamalainen <ccr@tnsp.org>
parents: 419
diff changeset
16 extern "C" {
e4a3f183e463 Modularize some more.
Matti Hamalainen <ccr@tnsp.org>
parents: 419
diff changeset
17 #endif
e4a3f183e463 Modularize some more.
Matti Hamalainen <ccr@tnsp.org>
parents: 419
diff changeset
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
2514
bf1d671fc999 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2511
diff changeset
21 #define D64_MAX_EXTRA_DATA 16 // Number of extraData slots
bf1d671fc999 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2511
diff changeset
22 #define D64_MAX_EXTRA_INFO 64 // Number of extraInfo slots
2238
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
f367677a5b21 Cosmetic.
Matti Hamalainen <ccr@tnsp.org>
parents: 2322
diff changeset
28 #define D64_SCR_CH_WIDTH (D64_SCR_WIDTH / 8)
f367677a5b21 Cosmetic.
Matti Hamalainen <ccr@tnsp.org>
parents: 2322
diff changeset
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
9f150c0e1467 Clean up some constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2325
diff changeset
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
9f150c0e1467 Clean up some constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2325
diff changeset
34
9f150c0e1467 Clean up some constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2325
diff changeset
35 // Define the usually visible area
9f150c0e1467 Clean up some constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2325
diff changeset
36 #define D64_SCR_MIN_XC 32
9f150c0e1467 Clean up some constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2325
diff changeset
37 #define D64_SCR_MAX_XC (D64_SCR_MIN_XC + D64_SCR_WIDTH)
9f150c0e1467 Clean up some constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2325
diff changeset
38 #define D64_SCR_MIN_YC 50
9f150c0e1467 Clean up some constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2325
diff changeset
39 #define D64_SCR_MAX_YC (D64_SCR_MIN_YC + D64_SCR_HEIGHT)
9f150c0e1467 Clean up some constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2325
diff changeset
40
9f150c0e1467 Clean up some constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2325
diff changeset
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 // 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
43 #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
44
2597
f2fffa7b9137 Cosmetic.
Matti Hamalainen <ccr@tnsp.org>
parents: 2590
diff changeset
45
407
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
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
52 #define D64_MAX_SPRITES 8 // Max sprites per scanline (in simple cases)
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
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
658bf4c452d0 Comments, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 921
diff changeset
67
1637
58ef0124394d Add some comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1592
diff changeset
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 {
2397
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
71 D64_FMT_HIRES = 0x000001, // Hi-res
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
72 D64_FMT_MC = 0x000002, // MultiColor
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
73 D64_FMT_ECM = 0x000003, // ECM mode (applies only to character mode)
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
74 D64_FMT_MODE_MASK = 0x00000f,
2116
b49d7cb20a73 Implement initial ECM support in charmap decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2114
diff changeset
75
2397
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
76 D64_FMT_ILACE = 0x000010, // Interlace
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
77 D64_FMT_FLI = 0x000020, // FLI
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
78 D64_FMT_CHAR = 0x000040, // Character mode
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
79 D64_FMT_BORDER = 0x000080, // Uses border area
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
80 D64_FMT_SPRITES = 0x000100, // Uses sprite layer
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
81
407
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
82 };
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
83
1637
58ef0124394d Add some comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1592
diff changeset
84
58ef0124394d Add some comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1592
diff changeset
85 // 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
86 enum
5b37a2e427b7 Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents: 516
diff changeset
87 {
2397
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
88 D64_ILACE_NONE = 0x000000, // Not set (invalid for interlaced images)
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
89 D64_ILACE_RES = 0x000001, // Interlace doubles resolution
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
90 D64_ILACE_COLOR = 0x000002, // 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
91 };
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
92
936
5104a7c87d7b Remove some unused structures, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 931
diff changeset
93
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
94 // 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
95 enum
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
96 {
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
97 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
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
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
100
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2132
diff changeset
101 // Various extra settings (see DMC64Image::extraInfo[])
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2132
diff changeset
102 enum
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2132
diff changeset
103 {
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
104 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
105
2309
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
106 D64_EI_CHAR_CASE, // [CHAR] 0 = upper case, != lower case
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
107 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
108
2309
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
109 D64_EI_FLI_TYPE, // FLI type (see D64_FLI_*)
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
110 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
111
2590
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
112 D64_EI_SPRBG_PRIORITY, // Sprite/background priority for 8 sprites (like $d01b)
1931
410679d2fe8a "Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents: 1923
diff changeset
113 };
410679d2fe8a "Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents: 1923
diff changeset
114
410679d2fe8a "Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents: 1923
diff changeset
115
1668
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
116 // 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
117 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
118 {
1668
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
119 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
120 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
121 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
122
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
123 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
124 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
125
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
126 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
127
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
128 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
129
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
130 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
131 };
407
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
132
512
95a6b6af53f1 Add some structures and enums for future.
Matti Hamalainen <ccr@tnsp.org>
parents: 511
diff changeset
133
2318
b2d8b054b2f7 Comment adjustments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2316
diff changeset
134 // "Subjects" of operations (DMC64EncDecOp::subject)
917
df3a74f230d9 Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents: 916
diff changeset
135 enum
df3a74f230d9 Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents: 916
diff changeset
136 {
1668
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
137 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
138 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
139 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
140 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
141 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
142
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
143 DS_D020,
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
144 DS_BGCOL,
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
145 DS_D021,
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
146 DS_D022,
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
147 DS_D023,
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
148 DS_D024,
1852
219417325036 Split dmC64GetOpMemBlockAndName() into dmC64GetOpMemBlock() and
Matti Hamalainen <ccr@tnsp.org>
parents: 1846
diff changeset
149
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
150 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
151
1852
219417325036 Split dmC64GetOpMemBlockAndName() into dmC64GetOpMemBlock() and
Matti Hamalainen <ccr@tnsp.org>
parents: 1846
diff changeset
152 DS_LAST
917
df3a74f230d9 Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents: 916
diff changeset
153 };
df3a74f230d9 Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents: 916
diff changeset
154
407
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
155
2318
b2d8b054b2f7 Comment adjustments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2316
diff changeset
156 // 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
157 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
158 {
2397
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
159 DF_NORMAL = 0xffffff,
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
160 DF_DECODE = 0x000001,
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
161 DF_ENCODE = 0x000002,
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
162 };
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2180
diff changeset
163
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2180
diff changeset
164
2327
c8c58147e6e5 Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents: 2326
diff changeset
165 // 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
166 enum
c8c58147e6e5 Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents: 2326
diff changeset
167 {
2397
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
168 D64_SPRF_MC = 0x000001,
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
169 D64_SPRF_X_EXPAND = 0x000002,
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
170 D64_SPRF_Y_EXPAND = 0x000004,
2327
c8c58147e6e5 Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents: 2326
diff changeset
171 };
c8c58147e6e5 Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents: 2326
diff changeset
172
c8c58147e6e5 Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents: 2326
diff changeset
173
1588
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
174 typedef struct
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
175 {
2201
9f3fb4004c20 Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 2200
diff changeset
176 char *name;
2203
b259312ddb59 Add description field to DMC64Palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 2201
diff changeset
177 char *desc;
2201
9f3fb4004c20 Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 2200
diff changeset
178 DMColor colors[D64_NCOLORS];
9f3fb4004c20 Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 2200
diff changeset
179 } DMC64Palette;
9f3fb4004c20 Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 2200
diff changeset
180
9f3fb4004c20 Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 2200
diff changeset
181
9f3fb4004c20 Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 2200
diff changeset
182 typedef struct
9f3fb4004c20 Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 2200
diff changeset
183 {
2511
6f2572b6f151 Comment out fields in DMC64ImageConvSpec that are not currently used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2507
diff changeset
184 DMPalette *pal; // Use this palette custom palette if != NULL
6f2572b6f151 Comment out fields in DMC64ImageConvSpec that are not currently used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2507
diff changeset
185 DMC64Palette *cpal; // If DMC64ImageConvSpec::pal == NULL, use this C64 palette
2201
9f3fb4004c20 Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 2200
diff changeset
186
2590
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
187 int xoffs, yoffs; // X/Y offsets in destination image
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
188 int width, height; // Destination width/height (0 = use src)
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
189
2511
6f2572b6f151 Comment out fields in DMC64ImageConvSpec that are not currently used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2507
diff changeset
190 // XXX These are not actually used yet (if ever)
2590
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
191 bool borders; // Render borders (overrides width/height & aspect settings)
2586
9807ae37ad69 Require stdbool.h, we require C11 now.
Matti Hamalainen <ccr@tnsp.org>
parents: 2539
diff changeset
192 bool aspect; // Render using pixel aspectX/aspectY, false = par=1:1
1931
410679d2fe8a "Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents: 1923
diff changeset
193 } DMC64ImageConvSpec;
410679d2fe8a "Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents: 1923
diff changeset
194
410679d2fe8a "Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents: 1923
diff changeset
195
410679d2fe8a "Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents: 1923
diff changeset
196 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
197 {
1588
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
198 Uint8 *data;
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
199 size_t size;
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
200 } DMC64MemBlock;
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
201
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
202
1668
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
203 typedef struct
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
204 {
2309
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
205 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
206 int flags; // D64_SPRF_* flags
2309
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
207 int color; // Color
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
208 int sprnum; // Physical sprite number for priority checking
2318
b2d8b054b2f7 Comment adjustments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2316
diff changeset
209
2309
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
210 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
211 } DMC64Sprite;
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
212
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
213
2590
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
214 typedef struct
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
215 {
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
216 int xc, yc; // Sprite coordinates (XXX TODO: borders etc.)
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
217 int flags; // D64_SPRF_* flags
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
218 int color; // Color
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
219 int sprnum; // Physical sprite number for priority checking
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
220
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
221 int sprindex; // Index in "bank"
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
222 int bank; // "Bank" of extraData where the data resides
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
223 } DMC64SpriteDef;
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
224
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
225
1934
23a344b5e4f1 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1933
diff changeset
226 typedef struct _DMC64ImageCommonFormat DMC64ImageCommonFormat;
23a344b5e4f1 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1933
diff changeset
227 typedef struct _DMC64ImageFormat DMC64ImageFormat;
23a344b5e4f1 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1933
diff changeset
228
23a344b5e4f1 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1933
diff changeset
229
1374
9edb17aa4a0a Forward declare typedef struct _DMC64Image;
Matti Hamalainen <ccr@tnsp.org>
parents: 1373
diff changeset
230 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
231 {
1947
8896d5676f1b Architectural change: remove some duplicated variables from DMC64Image
Matti Hamalainen <ccr@tnsp.org>
parents: 1935
diff changeset
232 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
233 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
234
2179
8d53da5bf067 Rename DMC64Image::nbanks to nblocks, which reflects better what it does.
Matti Hamalainen <ccr@tnsp.org>
parents: 2176
diff changeset
235 // 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
236 // 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
237 DMC64MemBlock
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
238 *color,
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
239 *bitmap,
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
240 *screen,
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
241 *charData;
931
2270d7f3af77 Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents: 926
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 // Other standard colours
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
244 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
245
1588
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
246 // 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
247 // for example raster colours might be stored
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
248 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
249
2590
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
250 // Sprites
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
251 int nsprites;
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
252 DMC64Sprite *sprites;
0d6aa5cae517 Just syncing some garbage in, no functional changes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2586
diff changeset
253
2316
ffdc51f0c9cd Comment adjustments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
254 // Extra information / settings
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2132
diff changeset
255 // See D64_EI_* constants.
2239
adb0480f6ebd Change DMC64Image::extraInfo[] type from Uint8 to int.
Matti Hamalainen <ccr@tnsp.org>
parents: 2238
diff changeset
256 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
257 } DMC64Image;
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
258
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
259
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2342
diff changeset
260 typedef struct
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2342
diff changeset
261 {
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2342
diff changeset
262 Uint8 *col;
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2342
diff changeset
263 } DMC64ScanLine;
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2342
diff changeset
264
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2342
diff changeset
265
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2342
diff changeset
266 typedef int (*DMC64GetPixelFunc)(DMC64ScanLine *scan,
2340
85cd3d36e670 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2336
diff changeset
267 const DMC64Image *img, const int rasterX, const int rasterY);
2332
46b929f822f8 Cosmetic.
Matti Hamalainen <ccr@tnsp.org>
parents: 2329
diff changeset
268
46b929f822f8 Cosmetic.
Matti Hamalainen <ccr@tnsp.org>
parents: 2329
diff changeset
269
510
43ea59887c69 Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents: 507
diff changeset
270 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
271 {
1668
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
272 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
273 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
274
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
275 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
276 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
277 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
278 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
279
2114
27cf33c3a646 Return actual error code from enc and dec functions instead of just BOOL.
Matti Hamalainen <ccr@tnsp.org>
parents: 2113
diff changeset
280 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
281 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
282
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2180
diff changeset
283 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
284 } 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
285
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
286
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
287 #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
288 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
289
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1591
diff changeset
290
1934
23a344b5e4f1 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1933
diff changeset
291 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
292 {
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
293 int mode, // Format mode/type flags, see D64_FMT_*
1935
489dde33f6b6 Cosmetics, add comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1934
diff changeset
294 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
295 chWidth, chHeight, // Width and height in charblocks
2335
552146218ace Comment adjustments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2332
diff changeset
296 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
297
2325
ddd29161d258 Add argument names to prototypes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2324
diff changeset
298 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
299 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
300
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
301 DMC64GetPixelFunc getPixel;
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
302
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
303 DMC64EncDecOpList encdecOps;
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
304 } DMC64ImageCommonFormat;
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
305
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
306
407
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
307 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
308 {
2520
4e7d9fd9b7e4 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2516
diff changeset
309 char *fext; // Filename extension
4e7d9fd9b7e4 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2516
diff changeset
310 char *name; // Format description/name
922
658bf4c452d0 Comments, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 921
diff changeset
311
2520
4e7d9fd9b7e4 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2516
diff changeset
312 ssize_t addr; // Loading address ( -2 if no loading address, -1 if loading address not known)
4e7d9fd9b7e4 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2516
diff changeset
313 size_t size; // Size, including loading address. Only used in probing and encoding.
2521
b19535da15e9 Add new field 'size_t extra' to DMC64ImageFormat for certain image format data
Matti Hamalainen <ccr@tnsp.org>
parents: 2520
diff changeset
314 size_t extra; // Extra data used for some formats
924
732787cccca8 Add dimension (w/h) information fields to C64 image format struct.
Matti Hamalainen <ccr@tnsp.org>
parents: 923
diff changeset
315
2520
4e7d9fd9b7e4 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2516
diff changeset
316 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
317
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
318 int (*probe)(const DMGrowBuf *buf, const DMC64ImageFormat *fmt);
1442
3773281491c9 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1426
diff changeset
319
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
320 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
321 int (*encode)(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt);
1442
3773281491c9 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1426
diff changeset
322
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
323 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
324 } DMC64ImageFormat;
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
325
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
326
2148
487157934904 Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
327 // Compression types
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
328 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
329 {
2606
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
330 DM_COMP_TYPE_RLE_MARKER = 1, // RLE with a separate marker byte
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
331 DM_COMP_TYPE_RLE_MASK = 2, // RLE that has marker bits and lower part acts as 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
332 };
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
333
2148
487157934904 Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
334
487157934904 Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
335 // 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
336 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
337 {
2606
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
338 DM_COMP_RLE_BYTE_RUNS = 0x000010, // Uses one-byte run lengths
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
339 DM_COMP_RLE_WORD_RUNS = 0x000020, // Uses two-byte (word) run lengths
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
340 DM_COMP_RLE_RUNS_MASK = 0x0000f0,
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
341
2606
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
342 DM_COMP_RLE_ORDER_1 = 0x000100, // Order: <marker>, <count/run length>, <data>
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
343 DM_COMP_RLE_ORDER_2 = 0x000200, // Order: <marker>, <data>, <count/run length>
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
344 DM_COMP_RLE_ORDER_MASK = 0x000f00,
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1668
diff changeset
345
2606
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
346 DM_COMP_RLE_ZERO_COUNT_MAX = 0x001000, // Zero "count" / run length value is max run (2^8, 2^16)
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
347
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
348 DM_COMP_INPUT_BACKWARDS = 0x010000, // Input stream is read backwards
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
349 DM_COMP_OUTPUT_BACKWARDS = 0x020000, // Output stream is written backwards
1720
77a4d8fab5cc Add output buffer cropping to dmFinishRLEBuffers() and the flags and fields to DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1719
diff changeset
350
2606
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
351 DM_COMP_OUTPUT_CROP_NONE = 0x000000,
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
352 DM_COMP_OUTPUT_CROP_START = 0x100000,
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
353 DM_COMP_OUTPUT_CROP_END = 0x200000,
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
354 DM_COMP_OUTPUT_CROP_MASK = 0xf00000,
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
355 };
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
356
3265175b24d2 Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents: 1503
diff changeset
357
3265175b24d2 Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents: 1503
diff changeset
358 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
359 {
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
360 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
361 size_t cropOutLen;
2606
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
362 int type; // Compression type DM_COMP_
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
363 int flags; // Compression 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
364
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
365 Uint8
2606
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
366 // DM_COMP_TYPE_RLE_MARKER mode
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
367 rleMarkerB, // Marker byte for byte length runs (if DM_COMP_RLE_BYTE_RUNS used)
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
368 rleMarkerW, // Marker byte for word length runs (if DM_COMP_RLE_WORD_RUNS used)
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
369
2606
92909caccc9e Rename various compression related internal constants.
Matti Hamalainen <ccr@tnsp.org>
parents: 2597
diff changeset
370 // DM_COMP_TYPE_RLE_MASK mode
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
371 rleMarkerBits,
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
372 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
373 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
374
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1668
diff changeset
375 unsigned int
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
376 // Minimum and maximum run lengths
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
377 rleMinCountB,
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
378 rleMinCountW,
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
379 rleMaxCountB,
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
380 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
381 } 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
382
3265175b24d2 Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents: 1503
diff changeset
383
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
384 //
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
385 // Global variables
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
386 //
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
387 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
388 extern const int ndmC64ImageFormats;
2200
dcd26cdc395e Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents: 2196
diff changeset
389 extern DMC64ImageFormat **dmC64ImageFormatsSorted;
dcd26cdc395e Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents: 2196
diff changeset
390
dcd26cdc395e Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents: 2196
diff changeset
391
dcd26cdc395e Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents: 2196
diff changeset
392 //
dcd26cdc395e Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents: 2196
diff changeset
393 // Library init/close
dcd26cdc395e Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents: 2196
diff changeset
394 //
dcd26cdc395e Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents: 2196
diff changeset
395 int dmLib64GFXInit(void);
dcd26cdc395e Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents: 2196
diff changeset
396 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
397
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
398
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
399 //
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
400 // Miscellaneous functions
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
401 //
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
402 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
403
2586
9807ae37ad69 Require stdbool.h, we require C11 now.
Matti Hamalainen <ccr@tnsp.org>
parents: 2539
diff changeset
404 int dmC64PaletteFromC64Palette(DMPalette **ppal, const DMC64Palette *cpal, const bool mixed);
9807ae37ad69 Require stdbool.h, we require C11 now.
Matti Hamalainen <ccr@tnsp.org>
parents: 2539
diff changeset
405 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
406
2586
9807ae37ad69 Require stdbool.h, we require C11 now.
Matti Hamalainen <ccr@tnsp.org>
parents: 2539
diff changeset
407 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
408
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
409 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
410 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
411 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
412
2205
3a25e85f0203 Cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 2204
diff changeset
413 // C64 bitmap image allocation/freeing
1378
c465860e44ed Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents: 1376
diff changeset
414 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
415 void dmC64ImageFree(DMC64Image *img);
2270d7f3af77 Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents: 926
diff changeset
416
2270d7f3af77 Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents: 926
diff changeset
417
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
418 // Encoding and decoding of formats and images
2324
dc79c64f158c Constify.
Matti Hamalainen <ccr@tnsp.org>
parents: 2323
diff changeset
419 int dmC64ConvertCSDataToImage(DMImage *img,
dc79c64f158c Constify.
Matti Hamalainen <ccr@tnsp.org>
parents: 2323
diff changeset
420 const int xoffs, const int yoffs, const Uint8 *buf,
2586
9807ae37ad69 Require stdbool.h, we require C11 now.
Matti Hamalainen <ccr@tnsp.org>
parents: 2539
diff changeset
421 const int width, const int height, const bool multicolor,
2324
dc79c64f158c Constify.
Matti Hamalainen <ccr@tnsp.org>
parents: 2323
diff changeset
422 const int *colors);
1644
9d9a0e852b3d Reorder some functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1637
diff changeset
423
1852
219417325036 Split dmC64GetOpMemBlockAndName() into dmC64GetOpMemBlock() and
Matti Hamalainen <ccr@tnsp.org>
parents: 1846
diff changeset
424 const char *dmC64GetOpSubjectName(const int subject);
2108
5f8f170f8774 Change dmC64GetOpMemBlock() function API.
Matti Hamalainen <ccr@tnsp.org>
parents: 2094
diff changeset
425 const DMC64MemBlock * dmC64GetOpMemBlock(const DMC64Image *img, const int subject, const int bank);
1644
9d9a0e852b3d Reorder some functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1637
diff changeset
426 int dmC64SanityCheckEncDecOp(const int i, const DMC64EncDecOp *op, const DMC64Image *img);
2319
5b4071a74289 Indentation cosmetic.
Matti Hamalainen <ccr@tnsp.org>
parents: 2318
diff changeset
427 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
428
1933
c5a46cb4cce5 Change DMC64ImageFormat parameter of dmC64GetSubjectSize() and
Matti Hamalainen <ccr@tnsp.org>
parents: 1932
diff changeset
429 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
430 size_t dmC64GetOpSubjectSize(const DMC64EncDecOp *op, const DMC64ImageCommonFormat *fmt);
1644
9d9a0e852b3d Reorder some functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1637
diff changeset
431
1442
3773281491c9 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1426
diff changeset
432
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1668
diff changeset
433 int dmC64DecodeGenericBMP(DMC64Image *img, const DMGrowBuf *buf, const DMC64ImageFormat *fmt);
2586
9807ae37ad69 Require stdbool.h, we require C11 now.
Matti Hamalainen <ccr@tnsp.org>
parents: 2539
diff changeset
434 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
435
2223
5477e792def3 Remove useless DMC64ImageFormat parameter from some conversion functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
436 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
437 int dmC64ConvertImage2BMP(DMC64Image **pdst, const DMImage *src, const DMC64ImageFormat *fmt, const DMC64ImageConvSpec *spec);
1446
948b32bd67ef Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1442
diff changeset
438
2516
5fcc9f7b8ad8 Change dmC64DecodeBMP() probeOffs and dataOffs to ssize_t, and use default
Matti Hamalainen <ccr@tnsp.org>
parents: 2515
diff changeset
439 int dmC64DecodeBMP(DMC64Image **img, const DMGrowBuf *buf, ssize_t probeOffs, ssize_t dataOffs, 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
440 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
441
2329
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2327
diff changeset
442 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
443
1713
0a9110b4d036 Add few RLE helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
444 void dmSetupRLEBuffers(DMGrowBuf *dst, DMGrowBuf *src, const DMCompParams *cfg);
0a9110b4d036 Add few RLE helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
445 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
446
1713
0a9110b4d036 Add few RLE helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
447 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
448 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
449
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1668
diff changeset
450 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
451 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
452
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1668
diff changeset
453 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
454 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
455
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
456
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
457 //
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
458 // 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
459 //
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
460 #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
461 const int \
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
462 x = rasterX / 8, \
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
463 y = rasterY / 8, \
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2266
diff changeset
464 yb = rasterY & 7, \
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
465 yoffs = y * ximg->fmt->chWidth, \
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2266
diff changeset
466 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
467 scroffs = yoffs + x, \
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
468 vshift = 7 - (rasterX & 7);
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
469
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
470
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
471 #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
472 const int \
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
473 x = rasterX / 4, \
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
474 y = rasterY / 8, \
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2266
diff changeset
475 yb = rasterY & 7, \
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
476 yoffs = y * (ximg)->fmt->chWidth, \
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2266
diff changeset
477 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
478 scroffs = yoffs + x, \
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
479 vshift = 6 - ((rasterX * 2) & 6);
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
480
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
481
2132
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
482 #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
483 const int \
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
484 x = rasterX / 8, \
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
485 y = rasterY / 8, \
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
486 scroffs = y * (ximg)->fmt->chWidth + x; \
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
487
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
488
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
489 //
2345
fe025c461760 Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
490 // 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
491 //
2345
fe025c461760 Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
492 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
493 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
494 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
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 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
497 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
498 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
499 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
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 dmC64GetGenericCharSCPixel(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,
2345
fe025c461760 Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
504 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
505
2345
fe025c461760 Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
506 int dmC64GetGenericCharMCPixel(Uint8 *col,
2132
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
507 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
508 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
509 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
510 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
511
2345
fe025c461760 Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
512 int dmC64GetGenericCharECMPixel(Uint8 *col,
2132
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
513 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
514 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
515 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
516 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
517
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
518
1591
3cc7b2aadda3 Add inline helper function fmtGetEncDecOp() and use it.
Matti Hamalainen <ccr@tnsp.org>
parents: 1588
diff changeset
519 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
520 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
521 return &fmt->format->encdecOps[index];
1591
3cc7b2aadda3 Add inline helper function fmtGetEncDecOp() and use it.
Matti Hamalainen <ccr@tnsp.org>
parents: 1588
diff changeset
522 }
3cc7b2aadda3 Add inline helper function fmtGetEncDecOp() and use it.
Matti Hamalainen <ccr@tnsp.org>
parents: 1588
diff changeset
523
3cc7b2aadda3 Add inline helper function fmtGetEncDecOp() and use it.
Matti Hamalainen <ccr@tnsp.org>
parents: 1588
diff changeset
524
435
e4a3f183e463 Modularize some more.
Matti Hamalainen <ccr@tnsp.org>
parents: 419
diff changeset
525 #ifdef __cplusplus
e4a3f183e463 Modularize some more.
Matti Hamalainen <ccr@tnsp.org>
parents: 419
diff changeset
526 }
e4a3f183e463 Modularize some more.
Matti Hamalainen <ccr@tnsp.org>
parents: 419
diff changeset
527 #endif
e4a3f183e463 Modularize some more.
Matti Hamalainen <ccr@tnsp.org>
parents: 419
diff changeset
528
407
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
529 #endif // LIB64GFX_H