comparison tools/lib64fmts.c @ 1856:37cac290ce8b

Allow override of block size in DEF_SCREEN_RAMS_8() and DEF_SCREEN_RAM() macros.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 24 Jun 2018 03:01:50 +0300
parents 5e33f367bafe
children 5d9dd663df8d
comparison
equal deleted inserted replaced
1855:5e33f367bafe 1856:37cac290ce8b
957 957
958 // 958 //
959 // Helper macros for defining screen memory layouts 959 // Helper macros for defining screen memory layouts
960 // common for several FLI type image formats 960 // common for several FLI type image formats
961 // 961 //
962 #define DEF_SCREEN_RAM(start, oindex, bindex, osize) { DO_COPY, DS_SCREEN_RAM, (start) + ((osize) * (oindex)), (bindex), 0, 0, NULL, NULL } 962 #define DEF_SCREEN_RAM(start, oindex, bindex, osize, bsize) { DO_COPY, DS_SCREEN_RAM, (start) + ((osize) * (oindex)), (bindex), (bsize), 0, NULL, NULL }
963 #define DEF_SCREEN_RAMS_8(start, sindex, osize) \ 963 #define DEF_SCREEN_RAMS_8(start, sindex, osize, bsize) \
964 DEF_SCREEN_RAM((start), 0, (sindex + 0), (osize)), \ 964 DEF_SCREEN_RAM((start), 0, (sindex + 0), (osize), (bsize)), \
965 DEF_SCREEN_RAM((start), 1, (sindex + 1), (osize)), \ 965 DEF_SCREEN_RAM((start), 1, (sindex + 1), (osize), (bsize)), \
966 DEF_SCREEN_RAM((start), 2, (sindex + 2), (osize)), \ 966 DEF_SCREEN_RAM((start), 2, (sindex + 2), (osize), (bsize)), \
967 DEF_SCREEN_RAM((start), 3, (sindex + 3), (osize)), \ 967 DEF_SCREEN_RAM((start), 3, (sindex + 3), (osize), (bsize)), \
968 DEF_SCREEN_RAM((start), 4, (sindex + 4), (osize)), \ 968 DEF_SCREEN_RAM((start), 4, (sindex + 4), (osize), (bsize)), \
969 DEF_SCREEN_RAM((start), 5, (sindex + 5), (osize)), \ 969 DEF_SCREEN_RAM((start), 5, (sindex + 5), (osize), (bsize)), \
970 DEF_SCREEN_RAM((start), 6, (sindex + 6), (osize)), \ 970 DEF_SCREEN_RAM((start), 6, (sindex + 6), (osize), (bsize)), \
971 DEF_SCREEN_RAM((start), 7, (sindex + 7), (osize)) 971 DEF_SCREEN_RAM((start), 7, (sindex + 7), (osize), (bsize))
972 972
973 973
974 974
975 // 975 //
976 // Many formats actually share memory layout, and there are packed and 976 // Many formats actually share memory layout, and there are packed and
1001 NULL, NULL, 1001 NULL, NULL,
1002 fmtGetPixelBlackMailFLI, 1002 fmtGetPixelBlackMailFLI,
1003 { 1003 {
1004 { DO_COPY , DS_EXTRA_DATA , 0x0000, 0, 200, 0, NULL, NULL }, 1004 { DO_COPY , DS_EXTRA_DATA , 0x0000, 0, 200, 0, NULL, NULL },
1005 { DO_COPY , DS_COLOR_RAM , 0x0100, 0, 0, 0, NULL, NULL }, 1005 { DO_COPY , DS_COLOR_RAM , 0x0100, 0, 0, 0, NULL, NULL },
1006 DEF_SCREEN_RAMS_8(0x0500, 0, 0x400), 1006 DEF_SCREEN_RAMS_8(0x0500, 0, 0x400, 0),
1007 { DO_COPY , DS_BITMAP_RAM , 0x2500, 0, 0, 0, NULL, NULL }, 1007 { DO_COPY , DS_BITMAP_RAM , 0x2500, 0, 0, 0, NULL, NULL },
1008 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL }, 1008 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL },
1009 } 1009 }
1010 }, 1010 },
1011 1011
1027 C64_SCR_WIDTH, C64_SCR_HEIGHT, 1027 C64_SCR_WIDTH, C64_SCR_HEIGHT,
1028 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, 1028 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT,
1029 NULL, NULL, 1029 NULL, NULL,
1030 fmtGetPixelFunPaint2, 1030 fmtGetPixelFunPaint2,
1031 { 1031 {
1032 DEF_SCREEN_RAMS_8(0x0000, 0, 0x400), 1032 DEF_SCREEN_RAMS_8(0x0000, 0, 0x400, 0),
1033 { DO_COPY , DS_BITMAP_RAM , 0x2000, 0, 0 , 0, NULL, NULL }, 1033 { DO_COPY , DS_BITMAP_RAM , 0x2000, 0, 0 , 0, NULL, NULL },
1034 { DO_COPY , DS_EXTRA_DATA , 0x3f48, 0, 100, 0, NULL, NULL }, 1034 { DO_COPY , DS_EXTRA_DATA , 0x3f48, 0, 100, 0, NULL, NULL },
1035 { DO_COPY , DS_COLOR_RAM , 0x4000, 0, 0 , 0, NULL, NULL }, 1035 { DO_COPY , DS_COLOR_RAM , 0x4000, 0, 0 , 0, NULL, NULL },
1036 DEF_SCREEN_RAMS_8(0x43e8, 8, 0x400), 1036 DEF_SCREEN_RAMS_8(0x43e8, 8, 0x400, 0),
1037 { DO_COPY , DS_BITMAP_RAM , 0x63e8, 1, 0 , 0, NULL, NULL }, 1037 { DO_COPY , DS_BITMAP_RAM , 0x63e8, 1, 0 , 0, NULL, NULL },
1038 { DO_COPY , DS_EXTRA_DATA , 0x8328, 0, 100, 100, NULL, NULL }, 1038 { DO_COPY , DS_EXTRA_DATA , 0x8328, 0, 100, 100, NULL, NULL },
1039 { DO_DEC_FUNC , 0 , 0 , 0, 1 , 0, fmtTruePaintGetLaceType, NULL }, 1039 { DO_DEC_FUNC , 0 , 0 , 0, 1 , 0, fmtTruePaintGetLaceType, NULL },
1040 { DO_LAST , 0 , 0 , 0, 0 , 0, NULL, NULL }, 1040 { DO_LAST , 0 , 0 , 0, 0 , 0, NULL, NULL },
1041 } 1041 }
1098 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, 1098 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT,
1099 fmtConvertECIBMP2Image, NULL, 1099 fmtConvertECIBMP2Image, NULL,
1100 fmtGetPixelECI, 1100 fmtGetPixelECI,
1101 { 1101 {
1102 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL }, 1102 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL },
1103 DEF_SCREEN_RAMS_8(0x2000, 0, 0x400), 1103 DEF_SCREEN_RAMS_8(0x2000, 0, 0x400, 0),
1104 { DO_COPY , DS_BITMAP_RAM , 0x4000, 1, 0, 0, NULL, NULL }, 1104 { DO_COPY , DS_BITMAP_RAM , 0x4000, 1, 0, 0, NULL, NULL },
1105 DEF_SCREEN_RAMS_8(0x6000, 8, 0x400), 1105 DEF_SCREEN_RAMS_8(0x6000, 8, 0x400, 0),
1106 { DO_DEC_FUNC , 0 , 0 , 0, 0, 0, fmtECIGetLaceType, NULL }, 1106 { DO_DEC_FUNC , 0 , 0 , 0, 0, 0, fmtECIGetLaceType, NULL },
1107 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL }, 1107 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL },
1108 } 1108 }
1109 }, 1109 },
1110 1110
1114 C64_SCR_CH_WIDTH, 24, 1114 C64_SCR_CH_WIDTH, 24,
1115 NULL, NULL, 1115 NULL, NULL,
1116 fmtGetPixelCrestHIFLIorCDHM, 1116 fmtGetPixelCrestHIFLIorCDHM,
1117 { 1117 {
1118 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL }, 1118 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL },
1119 DEF_SCREEN_RAMS_8(0x2000, 0, 0x400), 1119 DEF_SCREEN_RAMS_8(0x2000, 0, 0x400, 0),
1120 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL }, 1120 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL },
1121 } 1121 }
1122 }, 1122 },
1123 1123
1124 { // #9: FLI Designer 1.x & 2.0 1124 { // #9: FLI Designer 1.x & 2.0
1127 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, 1127 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT,
1128 NULL, NULL, 1128 NULL, NULL,
1129 fmtGetPixelFLIDesigner, 1129 fmtGetPixelFLIDesigner,
1130 { 1130 {
1131 { DO_COPY , DS_COLOR_RAM , 0x0000, 0, 0, 0, NULL, NULL }, 1131 { DO_COPY , DS_COLOR_RAM , 0x0000, 0, 0, 0, NULL, NULL },
1132 DEF_SCREEN_RAMS_8(0x0400, 0, 0x400), 1132 DEF_SCREEN_RAMS_8(0x0400, 0, 0x400, 0),
1133 { DO_COPY , DS_BITMAP_RAM , 0x2400, 0, 0, 0, NULL, NULL }, 1133 { DO_COPY , DS_BITMAP_RAM , 0x2400, 0, 0, 0, NULL, NULL },
1134 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL }, 1134 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL },
1135 } 1135 }
1136 }, 1136 },
1137 1137
1555 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, 1555 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT,
1556 NULL, NULL, 1556 NULL, NULL,
1557 fmtGetPixelBFLI, 1557 fmtGetPixelBFLI,
1558 { 1558 {
1559 { DO_COPY , DS_COLOR_RAM , 0x0001, 0, 0, 0, NULL, NULL }, 1559 { DO_COPY , DS_COLOR_RAM , 0x0001, 0, 0, 0, NULL, NULL },
1560 DEF_SCREEN_RAMS_8(0x0401, 0, 0x400), 1560 DEF_SCREEN_RAMS_8(0x0401, 0, 0x400, 0),
1561 { DO_COPY , DS_BITMAP_RAM , 0x2401, 0, 0x1fff, 0, NULL, NULL }, 1561 { DO_COPY , DS_BITMAP_RAM , 0x2401, 0, 0x1fff, 0, NULL, NULL },
1562 DEF_SCREEN_RAMS_8(0x4401, 8, 0x400), 1562 DEF_SCREEN_RAMS_8(0x4401, 8, 0x400, 0),
1563 { DO_COPY , DS_BITMAP_RAM , 0x6401, 1, 0, 0, NULL, NULL }, 1563 { DO_COPY , DS_BITMAP_RAM , 0x6401, 1, 0, 0, NULL, NULL },
1564 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL }, 1564 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL },
1565 } 1565 }
1566 }, 1566 },
1567 NULL 1567 NULL
1674 C64_SCR_WIDTH, C64_SCR_HEIGHT, 1674 C64_SCR_WIDTH, C64_SCR_HEIGHT,
1675 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, 1675 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT,
1676 NULL, NULL, 1676 NULL, NULL,
1677 fmtGetPixelFunPaint2, // The format is essentially same as FP2 1677 fmtGetPixelFunPaint2, // The format is essentially same as FP2
1678 { 1678 {
1679 DEF_SCREEN_RAMS_8(0x0000, 0, 0x400), 1679 DEF_SCREEN_RAMS_8(0x0000, 0, 0x400, 0),
1680 { DO_COPY , DS_BITMAP_RAM , 0x2000, 0, 0 , 0, NULL, NULL }, 1680 { DO_COPY , DS_BITMAP_RAM , 0x2000, 0, 0 , 0, NULL, NULL },
1681 { DO_COPY , DS_EXTRA_DATA , 0x3f4f, 0, 177, 0, NULL, NULL }, 1681 { DO_COPY , DS_EXTRA_DATA , 0x3f4f, 0, 177, 0, NULL, NULL },
1682 { DO_COPY , DS_COLOR_RAM , 0x4000, 0, 0 , 0, NULL, NULL }, 1682 { DO_COPY , DS_COLOR_RAM , 0x4000, 0, 0 , 0, NULL, NULL },
1683 DEF_SCREEN_RAMS_8(0x4400, 8, 0x400), 1683 DEF_SCREEN_RAMS_8(0x4400, 8, 0x400, 0),
1684 { DO_COPY , DS_BITMAP_RAM , 0x6400, 1, 0 , 0, NULL, NULL }, 1684 { DO_COPY , DS_BITMAP_RAM , 0x6400, 1, 0 , 0, NULL, NULL },
1685 // GunPaint does not store the last 3 d021 values .. so set them to black 1685 // GunPaint does not store the last 3 d021 values .. so set them to black
1686 // XXX TODO: According to some, the last 4 should be same .. 1686 // XXX TODO: According to some, the last 4 should be same ..
1687 { DO_SET_MEM , DS_EXTRA_DATA , 0 , 0, 3 , 20+177, NULL, NULL }, 1687 { DO_SET_MEM , DS_EXTRA_DATA , 0 , 0, 3 , 20+177, NULL, NULL },
1688 { DO_DEC_FUNC , 0 , 0x2742, 0, 1 , 0, fmtTruePaintGetLaceType, NULL }, 1688 { DO_DEC_FUNC , 0 , 0x2742, 0, 1 , 0, fmtTruePaintGetLaceType, NULL },
1723 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, 1723 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT,
1724 NULL, NULL, 1724 NULL, NULL,
1725 fmtGetPixelCrestHIFLIorCDHM, 1725 fmtGetPixelCrestHIFLIorCDHM,
1726 { 1726 {
1727 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL }, 1727 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL },
1728 DEF_SCREEN_RAMS_8(0x2000, 0, 0x400), 1728 DEF_SCREEN_RAMS_8(0x2000, 0, 0x400, 0),
1729 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL }, 1729 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL },
1730 } 1730 }
1731 }, 1731 },
1732 NULL 1732 NULL
1733 }, 1733 },