comparison tools/lib64fmts.c @ 2367:36226425aac1

Fix Petscii Coca editor format writing.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 07 Jan 2020 15:25:14 +0200
parents 1e6e018b6487
children 4cd67faadbd3
comparison
equal deleted inserted replaced
2366:1e6e018b6487 2367:36226425aac1
236 (void) buf; 236 (void) buf;
237 (void) fmt; 237 (void) fmt;
238 238
239 img->extraInfo[D64_EI_MODE] = D64_FMT_HIRES | D64_FMT_CHAR; 239 img->extraInfo[D64_EI_MODE] = D64_FMT_HIRES | D64_FMT_CHAR;
240 img->extraInfo[D64_EI_CHAR_CUSTOM] = 0; 240 img->extraInfo[D64_EI_CHAR_CUSTOM] = 0;
241
242 return DMERR_OK;
243 }
244
245
246 static const Uint8 fmtCocaPETSCII_ID1[] =
247 {
248 0x01, 0x08, 0x0b, 0x08, 0x0a, 0x00, 0x9e, 0x32, 0x30, 0x36,
249 0x31, 0x00, 0x00, 0x00, 0x78, 0xa2, 0x00, 0xbd, 0x5a, 0x08,
250 0x9d, 0x00, 0x04, 0xbd, 0x5a, 0x09, 0x9d, 0x00, 0x05, 0xbd,
251 0x5a, 0x0a, 0x9d, 0x00, 0x06, 0xbd, 0x5a, 0x0b, 0x9d, 0x00,
252 0x07, 0xbd, 0x5a, 0x0c, 0x9d, 0x00, 0xd8, 0xbd, 0x5a, 0x0d,
253 0x9d, 0x00, 0xd9, 0xbd, 0x5a, 0x0e, 0x9d, 0x00, 0xda, 0xbd,
254 0x5a, 0x0f, 0x9d, 0x00, 0xdb, 0xe8, 0xd0, 0xcd, 0xad, 0x42,
255 0x0c, 0x8d, 0x20, 0xd0, 0xad, 0x43, 0x0c, 0x8d, 0x21, 0xd0,
256 0xad, 0x44, 0x0c, 0x8d, 0x18, 0xd0, 0x4c, 0x55, 0x08
257 };
258
259 static int fmtProbeCocaPETSCII(const DMGrowBuf *buf, const DMC64ImageFormat *fmt)
260 {
261 (void) fmt;
262
263 if (buf->len == 2115 &&
264 DM_MEMCMP_SIZE(buf->data, fmtCocaPETSCII_ID1) == 0 &&
265 buf->data[0x0c44 - 0x0801 + 2] == 0x14)
266 return DM_PROBE_SCORE_MAX;
267
268 return DM_PROBE_SCORE_FALSE;
269 }
270
271
272 static int fmtEncodeCocaPETSCIIData(const DMC64EncDecOp *op, DMGrowBuf *buf,
273 const DMC64Image *img, const DMC64ImageCommonFormat *fmt)
274 {
275 (void) op;
276 (void) img;
277 (void) fmt;
278
279 memcpy(buf->data,
280 fmtCocaPETSCII_ID1, sizeof(fmtCocaPETSCII_ID1));
281
282 buf->data[0x0c44 - 0x0801 + 2] = 0x14;
241 283
242 return DMERR_OK; 284 return DMERR_OK;
243 } 285 }
244 286
245 287
2778 }, 2820 },
2779 NULL 2821 NULL
2780 }, 2822 },
2781 2823
2782 { 2824 {
2783 "poca", "Petscii Coca editor (unpacked)", 0x0801, 2115, DM_FMT_RDWR, 2825 "poca", "Petscii Coca editor (unpacked)", 0x0801, 0, DM_FMT_RDWR,
2784 NULL, 2826 fmtProbeCocaPETSCII,
2785 NULL, NULL, 2827 NULL, NULL,
2786 { 2828 {
2787 D64_FMT_HIRES | D64_FMT_CHAR, 2829 D64_FMT_HIRES | D64_FMT_CHAR,
2788 D64_SCR_WIDTH , D64_SCR_HEIGHT, 2830 D64_SCR_WIDTH , D64_SCR_HEIGHT,
2789 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT, 2831 D64_SCR_CH_WIDTH, D64_SCR_CH_HEIGHT,
2790 1, 1, 2832 1, 1,
2791 NULL, NULL, 2833 NULL, NULL,
2792 NULL, 2834 NULL,
2793 { 2835 {
2794 { DO_FUNC , 0 , 0 , 0, 0, 0, NULL, fmtEncodeMarqPETSCIIData, DF_NORMAL }, 2836 { DO_FUNC , 0 , 0 , 0, 0, 0, NULL, fmtEncodeCocaPETSCIIData, DF_NORMAL },
2795 { DO_COPY , DS_SCREEN_RAM , 0x085a - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL }, 2837 { DO_COPY , DS_SCREEN_RAM , 0x085a - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL },
2796 { DO_COPY , DS_COLOR_RAM , 0x0c5a - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL }, 2838 { DO_COPY , DS_COLOR_RAM , 0x0c5a - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL },
2839
2797 { DO_SET_MEM_LO , DS_D020 , 0x0c42 - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL }, 2840 { DO_SET_MEM_LO , DS_D020 , 0x0c42 - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL },
2798 { DO_SET_MEM_LO , DS_BGCOL , 0x0c43 - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL }, 2841 { DO_SET_MEM_LO , DS_BGCOL , 0x0c43 - 0x0801, 0, 0, 0, NULL, NULL, DF_NORMAL },
2799 2842
2800 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL }, 2843 { DO_LAST , 0 , 0 , 0, 0, 0, NULL, NULL, DF_NORMAL },
2801 } 2844 }