comparison tools/lib64fmts.c @ 2164:ed079e869d64

Rename DEF_SCREEN_RAMS* macros to DEF_REPEAT_BLOCK and add argument to set block type.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 11 Jun 2019 02:27:38 +0300
parents 1e7d80bfc8f1
children 3d3094ba21c5
comparison
equal deleted inserted replaced
2163:1e7d80bfc8f1 2164:ed079e869d64
1397 1397
1398 // 1398 //
1399 // Helper macros for defining screen memory layouts 1399 // Helper macros for defining screen memory layouts
1400 // common for several FLI type image formats 1400 // common for several FLI type image formats
1401 // 1401 //
1402 #define DEF_SCREEN_RAM(start, oindex, bindex, osize, bsize) \ 1402 #define DEF_REPEAT_BLOCK(dtype, start, oindex, bindex, osize, bsize) \
1403 { DO_COPY, DS_SCREEN_RAM, (start) + ((osize) * (oindex)), (bindex), (bsize), 0, NULL, NULL } 1403 { DO_COPY, (dtype), (start) + ((osize) * (oindex)), (bindex), (bsize), 0, NULL, NULL }
1404 1404
1405 #define DEF_SCREEN_RAMS_8(start, sindex, osize, bsize) \ 1405 #define DEF_REPEAT_BLOCK_8(dtype, start, sindex, osize, bsize) \
1406 DEF_SCREEN_RAM((start), 0, (sindex + 0), (osize), (bsize)), \ 1406 DEF_REPEAT_BLOCK((dtype), (start), 0, (sindex + 0), (osize), (bsize)), \
1407 DEF_SCREEN_RAM((start), 1, (sindex + 1), (osize), (bsize)), \ 1407 DEF_REPEAT_BLOCK((dtype), (start), 1, (sindex + 1), (osize), (bsize)), \
1408 DEF_SCREEN_RAM((start), 2, (sindex + 2), (osize), (bsize)), \ 1408 DEF_REPEAT_BLOCK((dtype), (start), 2, (sindex + 2), (osize), (bsize)), \
1409 DEF_SCREEN_RAM((start), 3, (sindex + 3), (osize), (bsize)), \ 1409 DEF_REPEAT_BLOCK((dtype), (start), 3, (sindex + 3), (osize), (bsize)), \
1410 DEF_SCREEN_RAM((start), 4, (sindex + 4), (osize), (bsize)), \ 1410 DEF_REPEAT_BLOCK((dtype), (start), 4, (sindex + 4), (osize), (bsize)), \
1411 DEF_SCREEN_RAM((start), 5, (sindex + 5), (osize), (bsize)), \ 1411 DEF_REPEAT_BLOCK((dtype), (start), 5, (sindex + 5), (osize), (bsize)), \
1412 DEF_SCREEN_RAM((start), 6, (sindex + 6), (osize), (bsize)), \ 1412 DEF_REPEAT_BLOCK((dtype), (start), 6, (sindex + 6), (osize), (bsize)), \
1413 DEF_SCREEN_RAM((start), 7, (sindex + 7), (osize), (bsize)) 1413 DEF_REPEAT_BLOCK((dtype), (start), 7, (sindex + 7), (osize), (bsize))
1414
1415 1414
1416 1415
1417 // 1416 //
1418 // Many formats actually share memory layout and other specs, and there are 1417 // Many formats actually share memory layout and other specs, and there are
1419 // packed and unpacked versions of several formats. We'll reuse these here 1418 // packed and unpacked versions of several formats. We'll reuse these here
1445 NULL, NULL, 1444 NULL, NULL,
1446 fmtGetPixelBlackMailFLI, 1445 fmtGetPixelBlackMailFLI,
1447 { 1446 {
1448 { DO_COPY , DS_EXTRA_DATA , 0x0000, 0, 200, 0, NULL, NULL }, 1447 { DO_COPY , DS_EXTRA_DATA , 0x0000, 0, 200, 0, NULL, NULL },
1449 { DO_COPY , DS_COLOR_RAM , 0x0100, 0, 0, 0, NULL, NULL }, 1448 { DO_COPY , DS_COLOR_RAM , 0x0100, 0, 0, 0, NULL, NULL },
1450 DEF_SCREEN_RAMS_8(0x0500, 0, 0x400, 0), 1449 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x0500, 0, 0x400, 0),
1451 { DO_COPY , DS_BITMAP_RAM , 0x2500, 0, 0, 0, NULL, NULL }, 1450 { DO_COPY , DS_BITMAP_RAM , 0x2500, 0, 0, 0, NULL, NULL },
1452 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL }, 1451 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL },
1453 } 1452 }
1454 }, 1453 },
1455 1454
1473 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT, 1472 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
1474 1, 1, 1473 1, 1,
1475 NULL, NULL, 1474 NULL, NULL,
1476 fmtGetPixelFunPaint2, 1475 fmtGetPixelFunPaint2,
1477 { 1476 {
1478 DEF_SCREEN_RAMS_8(0x0000, 0, 0x400, 0), 1477 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x0000, 0, 0x400, 0),
1479 { DO_COPY , DS_BITMAP_RAM , 0x2000, 0, 0 , 0, NULL, NULL }, 1478 { DO_COPY , DS_BITMAP_RAM , 0x2000, 0, 0 , 0, NULL, NULL },
1480 { DO_COPY , DS_EXTRA_DATA , 0x3f48, 0, 100, 0, NULL, NULL }, 1479 { DO_COPY , DS_EXTRA_DATA , 0x3f48, 0, 100, 0, NULL, NULL },
1481 { DO_COPY , DS_COLOR_RAM , 0x4000, 0, 0 , 0, NULL, NULL }, 1480 { DO_COPY , DS_COLOR_RAM , 0x4000, 0, 0 , 0, NULL, NULL },
1482 DEF_SCREEN_RAMS_8(0x43e8, 8, 0x400, 0), 1481 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x43e8, 8, 0x400, 0),
1483 { DO_COPY , DS_BITMAP_RAM , 0x63e8, 1, 0 , 0, NULL, NULL }, 1482 { DO_COPY , DS_BITMAP_RAM , 0x63e8, 1, 0 , 0, NULL, NULL },
1484 { DO_COPY , DS_EXTRA_DATA , 0x8328, 0, 100, 100, NULL, NULL }, 1483 { DO_COPY , DS_EXTRA_DATA , 0x8328, 0, 100, 100, NULL, NULL },
1485 { DO_FUNC , 0 , 0 , 0, 1 , 0, fmtTruePaintGetLaceType, NULL }, 1484 { DO_FUNC , 0 , 0 , 0, 1 , 0, fmtTruePaintGetLaceType, NULL },
1486 { DO_LAST , 0 , 0 , 0, 0 , 0, NULL, NULL }, 1485 { DO_LAST , 0 , 0 , 0, 0 , 0, NULL, NULL },
1487 } 1486 }
1547 1, 1, 1546 1, 1,
1548 fmtConvertECIBMP2Image, NULL, 1547 fmtConvertECIBMP2Image, NULL,
1549 fmtGetPixelECI, 1548 fmtGetPixelECI,
1550 { 1549 {
1551 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL }, 1550 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL },
1552 DEF_SCREEN_RAMS_8(0x2000, 0, 0x400, 0), 1551 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x2000, 0, 0x400, 0),
1553 { DO_COPY , DS_BITMAP_RAM , 0x4000, 1, 0, 0, NULL, NULL }, 1552 { DO_COPY , DS_BITMAP_RAM , 0x4000, 1, 0, 0, NULL, NULL },
1554 DEF_SCREEN_RAMS_8(0x6000, 8, 0x400, 0), 1553 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x6000, 8, 0x400, 0),
1555 { DO_FUNC , 0 , 0 , 0, 0, 0, fmtECIGetLaceType, NULL }, 1554 { DO_FUNC , 0 , 0 , 0, 0, 0, fmtECIGetLaceType, NULL },
1556 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL }, 1555 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL },
1557 } 1556 }
1558 }, 1557 },
1559 1558
1564 1, 1, 1563 1, 1,
1565 NULL, NULL, 1564 NULL, NULL,
1566 fmtGetPixelCrestHIFLIorCDHM, 1565 fmtGetPixelCrestHIFLIorCDHM,
1567 { 1566 {
1568 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL }, 1567 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL },
1569 DEF_SCREEN_RAMS_8(0x2000, 0, 0x400, 0), 1568 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x2000, 0, 0x400, 0),
1570 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL }, 1569 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL },
1571 } 1570 }
1572 }, 1571 },
1573 1572
1574 { // #9: FBI Crew FLI Designer 1.x & 2.0 1573 { // #9: FBI Crew FLI Designer 1.x & 2.0
1578 2, 1, 1577 2, 1,
1579 NULL, NULL, 1578 NULL, NULL,
1580 fmtGetPixelFLIDesigner, 1579 fmtGetPixelFLIDesigner,
1581 { 1580 {
1582 { DO_COPY , DS_COLOR_RAM , 0x0000, 0, 0, 0, NULL, NULL }, 1581 { DO_COPY , DS_COLOR_RAM , 0x0000, 0, 0, 0, NULL, NULL },
1583 DEF_SCREEN_RAMS_8(0x0400, 0, 0x400, 0), 1582 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x0400, 0, 0x400, 0),
1584 { DO_COPY , DS_BITMAP_RAM , 0x2400, 0, 0, 0, NULL, NULL }, 1583 { DO_COPY , DS_BITMAP_RAM , 0x2400, 0, 0, 0, NULL, NULL },
1585 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL }, 1584 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL },
1586 } 1585 }
1587 }, 1586 },
1588 1587
2041 2, 1, 2040 2, 1,
2042 NULL, NULL, 2041 NULL, NULL,
2043 fmtGetPixelBFLI, 2042 fmtGetPixelBFLI,
2044 { 2043 {
2045 { DO_COPY , DS_COLOR_RAM , 0x0001, 0, 0x400 , 0, NULL, NULL }, 2044 { DO_COPY , DS_COLOR_RAM , 0x0001, 0, 0x400 , 0, NULL, NULL },
2046 DEF_SCREEN_RAMS_8(0x0401, 0, 0x400, 0), 2045 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x0401, 0, 0x400, 0),
2047 { DO_COPY , DS_BITMAP_RAM , 0x2401, 0, 0x2000, 0, NULL, NULL }, 2046 { DO_COPY , DS_BITMAP_RAM , 0x2401, 0, 0x2000, 0, NULL, NULL },
2048 DEF_SCREEN_RAMS_8(0x4401, 8, 0x400, 0x400), 2047 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x4401, 8, 0x400, 0x400),
2049 { DO_COPY , DS_BITMAP_RAM , 0x6401, 1, 0x2000, 0, NULL, NULL }, 2048 { DO_COPY , DS_BITMAP_RAM , 0x6401, 1, 0x2000, 0, NULL, NULL },
2050 { DO_LAST , 0 , 0 , 0, 0 , 0, NULL, NULL }, 2049 { DO_LAST , 0 , 0 , 0, 0 , 0, NULL, NULL },
2051 } 2050 }
2052 }, 2051 },
2053 NULL 2052 NULL
2186 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT, 2185 D64_SCR_CH_WIDTH , D64_SCR_CH_HEIGHT,
2187 1, 1, 2186 1, 1,
2188 NULL, NULL, 2187 NULL, NULL,
2189 fmtGetPixelFunPaint2, // The format is essentially same as FP2 2188 fmtGetPixelFunPaint2, // The format is essentially same as FP2
2190 { 2189 {
2191 DEF_SCREEN_RAMS_8(0x0000, 0, 0x400, 0), 2190 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x0000, 0, 0x400, 0),
2192 { DO_COPY , DS_BITMAP_RAM , 0x2000, 0, 0 , 0, NULL, NULL }, 2191 { DO_COPY , DS_BITMAP_RAM , 0x2000, 0, 0 , 0, NULL, NULL },
2193 { DO_COPY , DS_EXTRA_DATA , 0x3f4f, 0, 177, 0, NULL, NULL }, 2192 { DO_COPY , DS_EXTRA_DATA , 0x3f4f, 0, 177, 0, NULL, NULL },
2194 { DO_COPY , DS_COLOR_RAM , 0x4000, 0, 0 , 0, NULL, NULL }, 2193 { DO_COPY , DS_COLOR_RAM , 0x4000, 0, 0 , 0, NULL, NULL },
2195 DEF_SCREEN_RAMS_8(0x4400, 8, 0x400, 0), 2194 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x4400, 8, 0x400, 0),
2196 { DO_COPY , DS_BITMAP_RAM , 0x6400, 1, 0 , 0, NULL, NULL }, 2195 { DO_COPY , DS_BITMAP_RAM , 0x6400, 1, 0 , 0, NULL, NULL },
2197 // GunPaint does not store the last 3 d021 values .. so set them to black 2196 // GunPaint does not store the last 3 d021 values .. so set them to black
2198 // XXX TODO: According to some, the last 4 should be same .. 2197 // XXX TODO: According to some, the last 4 should be same ..
2199 { DO_SET_MEM , DS_EXTRA_DATA , 0 , 0, 3 , 20+177, NULL, NULL }, 2198 { DO_SET_MEM , DS_EXTRA_DATA , 0 , 0, 3 , 20+177, NULL, NULL },
2200 { DO_FUNC , 0 , 0x2742, 0, 1 , 0, fmtTruePaintGetLaceType, NULL }, 2199 { DO_FUNC , 0 , 0x2742, 0, 1 , 0, fmtTruePaintGetLaceType, NULL },
2264 1, 1, 2263 1, 1,
2265 NULL, NULL, 2264 NULL, NULL,
2266 fmtGetPixelCrestHIFLIorCDHM, 2265 fmtGetPixelCrestHIFLIorCDHM,
2267 { 2266 {
2268 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL }, 2267 { DO_COPY , DS_BITMAP_RAM , 0x0000, 0, 0, 0, NULL, NULL },
2269 DEF_SCREEN_RAMS_8(0x2000, 0, 0x400, 0), 2268 DEF_REPEAT_BLOCK_8(DS_SCREEN_RAM, 0x2000, 0, 0x400, 0),
2270 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL }, 2269 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL },
2271 } 2270 }
2272 }, 2271 },
2273 NULL 2272 NULL
2274 }, 2273 },