annotate tools/lib64gfx.h @ 2397:698ee976fb23

Cosmetics.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 10 Jan 2020 01:37:41 +0200
parents 89cb93184175
children 0b1928ed902f
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
2371
82cb32297ed2 Bump copyright years.
Matti Hamalainen <ccr@tnsp.org>
parents: 2345
diff changeset
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
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
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
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
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
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
936
5104a7c87d7b Remove some unused structures, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 931
diff changeset
101 // Charmode screen memory configuration
917
df3a74f230d9 Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents: 916
diff changeset
102 enum
df3a74f230d9 Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents: 916
diff changeset
103 {
936
5104a7c87d7b Remove some unused structures, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 931
diff changeset
104 D64_CHCFG_SCREEN, // Use screen memory
5104a7c87d7b Remove some unused structures, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 931
diff changeset
105 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
106 // 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
107 };
df3a74f230d9 Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents: 916
diff changeset
108
df3a74f230d9 Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents: 916
diff changeset
109
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2132
diff changeset
110 // Various extra settings (see DMC64Image::extraInfo[])
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2132
diff changeset
111 enum
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2132
diff changeset
112 {
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
113 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
114
2309
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
115 D64_EI_CHAR_CASE, // [CHAR] 0 = upper case, != lower case
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
116 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
117
2309
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
118 D64_EI_FLI_TYPE, // FLI type (see D64_FLI_*)
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
119 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
120 };
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2132
diff changeset
121
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2132
diff changeset
122
1931
410679d2fe8a "Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents: 1923
diff changeset
123 // 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
124 enum
410679d2fe8a "Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents: 1923
diff changeset
125 {
410679d2fe8a "Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents: 1923
diff changeset
126 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
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
410679d2fe8a "Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents: 1923
diff changeset
129
1668
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
130 // 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
131 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
132 {
1668
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
133 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
134 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
135 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
136
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
137 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
138 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
139
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
140 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
141
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
142 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
143
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
144 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
145 };
407
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
146
512
95a6b6af53f1 Add some structures and enums for future.
Matti Hamalainen <ccr@tnsp.org>
parents: 511
diff changeset
147
2318
b2d8b054b2f7 Comment adjustments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2316
diff changeset
148 // "Subjects" of operations (DMC64EncDecOp::subject)
917
df3a74f230d9 Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents: 916
diff changeset
149 enum
df3a74f230d9 Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents: 916
diff changeset
150 {
1668
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
151 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
152 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
153 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
154 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
155 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
156
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
157 DS_D020,
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
158 DS_BGCOL,
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
159 DS_D021,
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
160 DS_D022,
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
161 DS_D023,
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
162 DS_D024,
1852
219417325036 Split dmC64GetOpMemBlockAndName() into dmC64GetOpMemBlock() and
Matti Hamalainen <ccr@tnsp.org>
parents: 1846
diff changeset
163
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
164 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
165
1852
219417325036 Split dmC64GetOpMemBlockAndName() into dmC64GetOpMemBlock() and
Matti Hamalainen <ccr@tnsp.org>
parents: 1846
diff changeset
166 DS_LAST
917
df3a74f230d9 Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents: 916
diff changeset
167 };
df3a74f230d9 Initial implementation of charmode support in lib64gfx.
Matti Hamalainen <ccr@tnsp.org>
parents: 916
diff changeset
168
407
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
169
2318
b2d8b054b2f7 Comment adjustments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2316
diff changeset
170 // 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
171 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
172 {
2397
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
173 DF_NORMAL = 0xffffff,
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
174 DF_DECODE = 0x000001,
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
175 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
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
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2180
diff changeset
178
2327
c8c58147e6e5 Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents: 2326
diff changeset
179 // 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
180 enum
c8c58147e6e5 Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents: 2326
diff changeset
181 {
2397
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
182 D64_SPRF_MC = 0x000001,
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
183 D64_SPRF_X_EXPAND = 0x000002,
698ee976fb23 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2380
diff changeset
184 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
185 };
c8c58147e6e5 Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents: 2326
diff changeset
186
c8c58147e6e5 Change separate booleans in DMC64Sprite to a single flags field and define
Matti Hamalainen <ccr@tnsp.org>
parents: 2326
diff changeset
187
1588
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
188 typedef struct
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
189 {
2201
9f3fb4004c20 Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 2200
diff changeset
190 char *name;
2203
b259312ddb59 Add description field to DMC64Palette.
Matti Hamalainen <ccr@tnsp.org>
parents: 2201
diff changeset
191 char *desc;
2201
9f3fb4004c20 Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 2200
diff changeset
192 DMColor colors[D64_NCOLORS];
9f3fb4004c20 Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 2200
diff changeset
193 } DMC64Palette;
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
9f3fb4004c20 Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 2200
diff changeset
196 typedef struct
9f3fb4004c20 Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 2200
diff changeset
197 {
2318
b2d8b054b2f7 Comment adjustments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2316
diff changeset
198 int dither; // Dither mode (D64_DITH_*)
2335
552146218ace Comment adjustments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2332
diff changeset
199 BOOL aspect; // Render using pixel aspectX/aspectY
2201
9f3fb4004c20 Improvements to the lib64gfx palette handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 2200
diff changeset
200
2318
b2d8b054b2f7 Comment adjustments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2316
diff changeset
201 DMPalette *pal; // Use this palette
b2d8b054b2f7 Comment adjustments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2316
diff changeset
202 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
203 } DMC64ImageConvSpec;
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
410679d2fe8a "Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents: 1923
diff changeset
206 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
207 {
1588
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
208 Uint8 *data;
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
209 size_t size;
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
210 } DMC64MemBlock;
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
211
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
212
1668
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
213 typedef struct
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
214 {
2309
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
215 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
216 int flags; // D64_SPRF_* flags
2309
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
217 int color; // Color
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
218 int sprnum; // Physical sprite number for priority checking
2318
b2d8b054b2f7 Comment adjustments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2316
diff changeset
219
2309
0f8232c2af63 Comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2306
diff changeset
220 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
221 } DMC64Sprite;
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
222
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
223
1934
23a344b5e4f1 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1933
diff changeset
224 typedef struct _DMC64ImageCommonFormat DMC64ImageCommonFormat;
23a344b5e4f1 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1933
diff changeset
225 typedef struct _DMC64ImageFormat DMC64ImageFormat;
23a344b5e4f1 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1933
diff changeset
226
23a344b5e4f1 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1933
diff changeset
227
1374
9edb17aa4a0a Forward declare typedef struct _DMC64Image;
Matti Hamalainen <ccr@tnsp.org>
parents: 1373
diff changeset
228 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
229 {
1947
8896d5676f1b Architectural change: remove some duplicated variables from DMC64Image
Matti Hamalainen <ccr@tnsp.org>
parents: 1935
diff changeset
230 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
231 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
232
2179
8d53da5bf067 Rename DMC64Image::nbanks to nblocks, which reflects better what it does.
Matti Hamalainen <ccr@tnsp.org>
parents: 2176
diff changeset
233 // 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
234 // 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
235 DMC64MemBlock
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
236 *color,
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
237 *bitmap,
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
238 *screen,
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
239 *charData;
931
2270d7f3af77 Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents: 926
diff changeset
240
1588
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
241 // Other standard colours
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
242 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
243
1588
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
244 // 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
245 // for example raster colours might be stored
2125
56d4dc81774b Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents: 2121
diff changeset
246 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
247
2316
ffdc51f0c9cd Comment adjustments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2314
diff changeset
248 // Extra information / settings
2139
84780a9d8d17 Improve and fix charmap format decoding.
Matti Hamalainen <ccr@tnsp.org>
parents: 2132
diff changeset
249 // See D64_EI_* constants.
2239
adb0480f6ebd Change DMC64Image::extraInfo[] type from Uint8 to int.
Matti Hamalainen <ccr@tnsp.org>
parents: 2238
diff changeset
250 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
251 } DMC64Image;
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
252
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
253
2343
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2342
diff changeset
254 typedef struct
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2342
diff changeset
255 {
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2342
diff changeset
256 Uint8 *col;
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2342
diff changeset
257 } DMC64ScanLine;
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
94a653883a32 Change Uint8 pointer in getPixel functions to DMC64ScanLine pointer in
Matti Hamalainen <ccr@tnsp.org>
parents: 2342
diff changeset
260 typedef int (*DMC64GetPixelFunc)(DMC64ScanLine *scan,
2340
85cd3d36e670 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 2336
diff changeset
261 const DMC64Image *img, const int rasterX, const int rasterY);
2332
46b929f822f8 Cosmetic.
Matti Hamalainen <ccr@tnsp.org>
parents: 2329
diff changeset
262
46b929f822f8 Cosmetic.
Matti Hamalainen <ccr@tnsp.org>
parents: 2329
diff changeset
263
510
43ea59887c69 Start work on making C64 formats encoding possible by changing DMDecodeOps
Matti Hamalainen <ccr@tnsp.org>
parents: 507
diff changeset
264 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
265 {
1668
1741717b1ae5 Big overhaul to the enc/dec operator system to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 1660
diff changeset
266 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
267 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
268
2238
5db6e0b63b35 Change again how the interlace type information is stored. Now store it in
Matti Hamalainen <ccr@tnsp.org>
parents: 2224
diff changeset
269 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
270 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
271 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
272 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
273
2114
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 (*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
275 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
276
28871f500e84 Add new "flags" field to DMC64EncDecOp, defined by DF_* that can be used to
Matti Hamalainen <ccr@tnsp.org>
parents: 2180
diff changeset
277 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
278 } 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
279
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
280
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
281 #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
282 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
283
91d1bb571fca Implement common encdec ops lists for sharing oplists between formats that
Matti Hamalainen <ccr@tnsp.org>
parents: 1591
diff changeset
284
1934
23a344b5e4f1 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1933
diff changeset
285 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
286 {
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
287 int mode, // Format mode/type flags, see D64_FMT_*
1935
489dde33f6b6 Cosmetics, add comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1934
diff changeset
288 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
289 chWidth, chHeight, // Width and height in charblocks
2335
552146218ace Comment adjustments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2332
diff changeset
290 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
291
2325
ddd29161d258 Add argument names to prototypes.
Matti Hamalainen <ccr@tnsp.org>
parents: 2324
diff changeset
292 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
293 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
294
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
295 DMC64GetPixelFunc getPixel;
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
296
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
297 DMC64EncDecOpList encdecOps;
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
298 } DMC64ImageCommonFormat;
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
299
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
300
407
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
301 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
302 {
922
658bf4c452d0 Comments, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 921
diff changeset
303 char *fext; // Filename extension
658bf4c452d0 Comments, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 921
diff changeset
304 char *name; // Format description/name
658bf4c452d0 Comments, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 921
diff changeset
305
511
4cdcaeb68b54 Collapse most of the probing functions into one generic probe, as they only
Matti Hamalainen <ccr@tnsp.org>
parents: 510
diff changeset
306 size_t addr; // Loading address (0 if no loading address)
1495
acb607e2c350 Clarify a comment.
Matti Hamalainen <ccr@tnsp.org>
parents: 1494
diff changeset
307 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
308
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
309 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
310
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
311 int (*probe)(const DMGrowBuf *buf, const DMC64ImageFormat *fmt);
1442
3773281491c9 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1426
diff changeset
312
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
313 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
314 int (*encode)(DMGrowBuf *buf, const DMC64Image *img, const DMC64ImageFormat *fmt);
1442
3773281491c9 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1426
diff changeset
315
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
316 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
317 } DMC64ImageFormat;
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
318
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
319
1637
58ef0124394d Add some comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1592
diff changeset
320 //
2148
487157934904 Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
321 // Compression types
1637
58ef0124394d Add some comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 1592
diff changeset
322 //
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
323 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
324 {
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_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
326 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
327 };
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
2148
487157934904 Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
329
487157934904 Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
330 // 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
331 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
332 {
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
333 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
334 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
335 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
336
2148
487157934904 Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
337 DM_RLE_ORDER_1 = 0x0010, // Order: <marker>, <count/run length>, <data>
487157934904 Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
338 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
339 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
340
1786
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_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
342 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
343 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
344
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_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
346 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
347 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
348 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
349 };
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
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
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 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
353 {
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
354 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
355 size_t cropOutLen;
2148
487157934904 Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
356 int type; // DM_COMP_*
487157934904 Clarifications in comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 2139
diff changeset
357 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
358
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
359 Uint8
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
360 // DM_COMP_RLE_MARKER mode
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
361 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
362 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
363
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
364 // DM_COMP_RLE_MASK mode
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
365 rleMarkerBits,
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
366 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
367 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
368
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1668
diff changeset
369 unsigned int
1660
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
370 // Minimum and maximum run lengths
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
371 rleMinCountB,
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
372 rleMinCountW,
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
373 rleMaxCountB,
7555c8803529 More work on improving the generic RLE decoder/encoder.
Matti Hamalainen <ccr@tnsp.org>
parents: 1650
diff changeset
374 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
375 } 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
376
3265175b24d2 Change the passing of RLE compression/decompression parameters to be in a dedicated struct.
Matti Hamalainen <ccr@tnsp.org>
parents: 1503
diff changeset
377
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
378 //
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
379 // Global variables
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
380 //
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
381 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
382 extern const int ndmC64ImageFormats;
2200
dcd26cdc395e Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents: 2196
diff changeset
383 extern DMC64ImageFormat **dmC64ImageFormatsSorted;
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 //
dcd26cdc395e Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents: 2196
diff changeset
387 // Library init/close
dcd26cdc395e Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents: 2196
diff changeset
388 //
dcd26cdc395e Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents: 2196
diff changeset
389 int dmLib64GFXInit(void);
dcd26cdc395e Replace dmC64InitializeFormats() with dmLib64GFXInit() and dmLib64GFXClose().
Matti Hamalainen <ccr@tnsp.org>
parents: 2196
diff changeset
390 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
391
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
392
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
393 //
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
394 // Miscellaneous functions
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
395 //
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
396 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
397
2208
90ec1ec89c56 Revamp the palette handling in lib64gfx somewhat, add helper functions to
Matti Hamalainen <ccr@tnsp.org>
parents: 2206
diff changeset
398 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
399 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
400
1780
5ea4713e9e0f Change c64 format probing API to use DMGrowBuf.
Matti Hamalainen <ccr@tnsp.org>
parents: 1775
diff changeset
401 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
402
ca087c0cc9c4 Refactor the c64 format memory handling a bit for more flexibility.
Matti Hamalainen <ccr@tnsp.org>
parents: 1586
diff changeset
403 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
404 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
405 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
406
2205
3a25e85f0203 Cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 2204
diff changeset
407 // C64 bitmap image allocation/freeing
1378
c465860e44ed Make c64 image bank allocation dynamic.
Matti Hamalainen <ccr@tnsp.org>
parents: 1376
diff changeset
408 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
409 void dmC64ImageFree(DMC64Image *img);
2270d7f3af77 Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents: 926
diff changeset
410
2270d7f3af77 Refactor the DMC64Image handling to be more dynamic, and start
Matti Hamalainen <ccr@tnsp.org>
parents: 926
diff changeset
411
1503
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
412 // Encoding and decoding of formats and images
2324
dc79c64f158c Constify.
Matti Hamalainen <ccr@tnsp.org>
parents: 2323
diff changeset
413 int dmC64ConvertCSDataToImage(DMImage *img,
dc79c64f158c Constify.
Matti Hamalainen <ccr@tnsp.org>
parents: 2323
diff changeset
414 const int xoffs, const int yoffs, const Uint8 *buf,
dc79c64f158c Constify.
Matti Hamalainen <ccr@tnsp.org>
parents: 2323
diff changeset
415 const int width, const int height, const BOOL multicolor,
dc79c64f158c Constify.
Matti Hamalainen <ccr@tnsp.org>
parents: 2323
diff changeset
416 const int *colors);
1644
9d9a0e852b3d Reorder some functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1637
diff changeset
417
2205
3a25e85f0203 Cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 2204
diff changeset
418 int dmC64ImageGetNumBlocks(const DMC64ImageFormat *fmt);
3a25e85f0203 Cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 2204
diff changeset
419
1852
219417325036 Split dmC64GetOpMemBlockAndName() into dmC64GetOpMemBlock() and
Matti Hamalainen <ccr@tnsp.org>
parents: 1846
diff changeset
420 const char *dmC64GetOpSubjectName(const int subject);
2108
5f8f170f8774 Change dmC64GetOpMemBlock() function API.
Matti Hamalainen <ccr@tnsp.org>
parents: 2094
diff changeset
421 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
422 int dmC64SanityCheckEncDecOp(const int i, const DMC64EncDecOp *op, const DMC64Image *img);
2319
5b4071a74289 Indentation cosmetic.
Matti Hamalainen <ccr@tnsp.org>
parents: 2318
diff changeset
423 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
424
1933
c5a46cb4cce5 Change DMC64ImageFormat parameter of dmC64GetSubjectSize() and
Matti Hamalainen <ccr@tnsp.org>
parents: 1932
diff changeset
425 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
426 size_t dmC64GetOpSubjectSize(const DMC64EncDecOp *op, const DMC64ImageCommonFormat *fmt);
1644
9d9a0e852b3d Reorder some functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1637
diff changeset
427
1442
3773281491c9 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 1426
diff changeset
428
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1668
diff changeset
429 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
430 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
431
2223
5477e792def3 Remove useless DMC64ImageFormat parameter from some conversion functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 2222
diff changeset
432 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
433 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
434
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1668
diff changeset
435 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
436 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
437
2329
0085ce04788b Add return value (error code) to dmGenericRLEAnalyze() and pass it through where used.
Matti Hamalainen <ccr@tnsp.org>
parents: 2327
diff changeset
438 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
439
1713
0a9110b4d036 Add few RLE helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
440 void dmSetupRLEBuffers(DMGrowBuf *dst, DMGrowBuf *src, const DMCompParams *cfg);
0a9110b4d036 Add few RLE helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
441 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
442
1713
0a9110b4d036 Add few RLE helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 1711
diff changeset
443 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
444 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
445
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1668
diff changeset
446 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
447 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
448
1707
a0986cfd6f9d More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents: 1668
diff changeset
449 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
450 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
451
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
452
c7b9ef56319b Factor all the c64 file format specific things into lib64fmt.c
Matti Hamalainen <ccr@tnsp.org>
parents: 1499
diff changeset
453 //
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
454 // 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
455 //
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
456 #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
457 const int \
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
458 x = rasterX / 8, \
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
459 y = rasterY / 8, \
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2266
diff changeset
460 yb = rasterY & 7, \
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
461 yoffs = y * ximg->fmt->chWidth, \
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2266
diff changeset
462 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
463 scroffs = yoffs + x, \
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
464 vshift = 7 - (rasterX & 7);
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
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
467 #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
468 const int \
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
469 x = rasterX / 4, \
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
470 y = rasterY / 8, \
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2266
diff changeset
471 yb = rasterY & 7, \
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
472 yoffs = y * (ximg)->fmt->chWidth, \
2306
e798a41f27a5 Clean up some code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents: 2266
diff changeset
473 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
474 scroffs = yoffs + x, \
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
475 vshift = 6 - ((rasterX * 2) & 6);
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
476
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
477
2132
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
478 #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
479 const int \
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
480 x = rasterX / 8, \
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
481 y = rasterY / 8, \
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
482 scroffs = y * (ximg)->fmt->chWidth + x; \
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
483
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
484
2129
2129d4ac6f45 Refactor c64 image rendering completely to be more flexible.
Matti Hamalainen <ccr@tnsp.org>
parents: 2125
diff changeset
485 //
2345
fe025c461760 Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
486 // 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
487 //
2345
fe025c461760 Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
488 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
489 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
490 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
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 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
493 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
494 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
495 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
496
2345
fe025c461760 Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
497 int dmC64GetGenericCharSCPixel(Uint8 *col,
2132
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
498 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
499 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
500 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
501
2345
fe025c461760 Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
502 int dmC64GetGenericCharMCPixel(Uint8 *col,
2132
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
503 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
504 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
505 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
506 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
507
2345
fe025c461760 Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
Matti Hamalainen <ccr@tnsp.org>
parents: 2343
diff changeset
508 int dmC64GetGenericCharECMPixel(Uint8 *col,
2132
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
509 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
510 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
511 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
512 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
513
6528a1398e8e Add char map helper functions and use them.
Matti Hamalainen <ccr@tnsp.org>
parents: 2129
diff changeset
514
1591
3cc7b2aadda3 Add inline helper function fmtGetEncDecOp() and use it.
Matti Hamalainen <ccr@tnsp.org>
parents: 1588
diff changeset
515 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
516 {
1775
4e4d54135baf Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents: 1774
diff changeset
517 return &fmt->format->encdecOps[index];
1591
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
3cc7b2aadda3 Add inline helper function fmtGetEncDecOp() and use it.
Matti Hamalainen <ccr@tnsp.org>
parents: 1588
diff changeset
520
435
e4a3f183e463 Modularize some more.
Matti Hamalainen <ccr@tnsp.org>
parents: 419
diff changeset
521 #ifdef __cplusplus
e4a3f183e463 Modularize some more.
Matti Hamalainen <ccr@tnsp.org>
parents: 419
diff changeset
522 }
e4a3f183e463 Modularize some more.
Matti Hamalainen <ccr@tnsp.org>
parents: 419
diff changeset
523 #endif
e4a3f183e463 Modularize some more.
Matti Hamalainen <ccr@tnsp.org>
parents: 419
diff changeset
524
407
59244a7ae37f Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
525 #endif // LIB64GFX_H