Mercurial > hg > dmlib
comparison tools/lib64fmts.c @ 1592:91d1bb571fca
Implement common encdec ops lists for sharing oplists between formats that
use the exact same ops.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 14 May 2018 06:36:18 +0300 |
parents | 22f29c25b349 |
children | a77876a07425 |
comparison
equal
deleted
inserted
replaced
1591:3cc7b2aadda3 | 1592:91d1bb571fca |
---|---|
515 return img->screen[vbank].data[scroffs] & 15; | 515 return img->screen[vbank].data[scroffs] & 15; |
516 } | 516 } |
517 | 517 |
518 | 518 |
519 // | 519 // |
520 // Array with data for supported formats | 520 // Helper macros for defining screen ram layouts |
521 // common for FLI type foramts | |
521 // | 522 // |
522 #define DEF_SCREEN_RAM(start, oindex, bindex, osize) { DT_SCREEN_RAM, (start) + ((osize) * (oindex)), (bindex), 0, NULL, NULL } | 523 #define DEF_SCREEN_RAM(start, oindex, bindex, osize) { DT_SCREEN_RAM, (start) + ((osize) * (oindex)), (bindex), 0, NULL, NULL } |
523 #define DEF_SCREEN_RAMS_8(start, sindex, osize) \ | 524 #define DEF_SCREEN_RAMS_8(start, sindex, osize) \ |
524 DEF_SCREEN_RAM((start), 0, (sindex + 0), (osize)), \ | 525 DEF_SCREEN_RAM((start), 0, (sindex + 0), (osize)), \ |
525 DEF_SCREEN_RAM((start), 1, (sindex + 1), (osize)), \ | 526 DEF_SCREEN_RAM((start), 1, (sindex + 1), (osize)), \ |
529 DEF_SCREEN_RAM((start), 5, (sindex + 5), (osize)), \ | 530 DEF_SCREEN_RAM((start), 5, (sindex + 5), (osize)), \ |
530 DEF_SCREEN_RAM((start), 6, (sindex + 6), (osize)), \ | 531 DEF_SCREEN_RAM((start), 6, (sindex + 6), (osize)), \ |
531 DEF_SCREEN_RAM((start), 7, (sindex + 7), (osize)) | 532 DEF_SCREEN_RAM((start), 7, (sindex + 7), (osize)) |
532 | 533 |
533 | 534 |
534 const DMC64ImageFormat dmC64ImageFormats[] = | 535 |
535 { | 536 // |
536 { | 537 // Many formats actually share memory layout, and there are packed and |
537 D64_FMT_MC, "d2p", "DrazPaint 1.4/2.0 (packed)", 0x5800, 0, DM_FMT_RDWR, | 538 // unpacked versions of several formats. We'll reuse these here through |
538 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, | 539 // this common formats ops array, referred from dmC64ImageFormats[] |
539 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, | 540 // |
540 fmtProbeDrazPaint20Packed, | 541 const DMC64EncDecOpList dmC64CommonFormatOps[] = |
541 fmtDecodeDrazPaintPacked, fmtEncodeDrazPaintPacked, | 542 { |
542 NULL, NULL, | 543 { // #0: Koala Paint type memory layout |
543 NULL, | 544 { DT_BITMAP_RAM, 0x0000, 0, 0, NULL, NULL }, |
544 { | 545 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, |
546 { DT_COLOR_RAM, 0x2328, 0, 0, NULL, NULL }, | |
547 { DT_COLOR_REG, 0x2710, 0, DC_BGCOL, NULL, NULL }, | |
548 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
549 }, | |
550 | |
551 { // #1: Amica Paint, Run Paint, etc. layout | |
552 { DT_BITMAP_RAM, 0x0000, 0, 0, NULL, NULL }, | |
553 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, | |
554 { DT_COLOR_RAM, 0x2328, 0, 0, NULL, NULL }, | |
555 { DT_COLOR_REG, 0x2710, 0, DC_BGCOL, NULL, NULL }, | |
556 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
557 }, | |
558 | |
559 { // #2: Art Studio etc. Hires | |
560 { DT_BITMAP_RAM, 0x0000, 0, 0, NULL, NULL }, | |
561 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, | |
562 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
563 }, | |
564 | |
565 { // #3: FunPaint II | |
566 DEF_SCREEN_RAMS_8( 0x0000, 0, 0x400), | |
567 { DT_BITMAP_RAM, 0x2000, 0, 0, NULL, NULL }, | |
568 { DT_EXTRA_DATA, 0x3f40, 0, 100, NULL, NULL }, | |
569 { DT_COLOR_RAM, 0x4000, 0, 0, NULL, NULL }, | |
570 DEF_SCREEN_RAMS_8( 0x43e8, 8, 0x400), | |
571 { DT_BITMAP_RAM, 0x63e8, 1, 0, NULL, NULL }, | |
572 { DT_EXTRA_DATA, 0x8328, 1, 100, NULL, NULL }, | |
573 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
574 }, | |
575 | |
576 { // #4: DrazPaint 1.x & 2 | |
545 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, | 577 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, |
546 { DT_BITMAP_RAM, 0x0800, 0, 0, NULL, NULL }, | 578 { DT_BITMAP_RAM, 0x0800, 0, 0, NULL, NULL }, |
547 { DT_SCREEN_RAM, 0x0400, 0, 0, NULL, NULL }, | 579 { DT_SCREEN_RAM, 0x0400, 0, 0, NULL, NULL }, |
548 { DT_COLOR_REG, 0x2740, 0, DC_BGCOL, NULL, NULL }, | 580 { DT_COLOR_REG, 0x2740, 0, DC_BGCOL, NULL, NULL }, |
549 { DT_LAST, 0, 0, 0, NULL, NULL }, | 581 { DT_LAST, 0, 0, 0, NULL, NULL }, |
550 } | 582 }, |
551 }, | 583 |
552 | 584 { // #5: DrazLace 1.0 |
553 { | |
554 D64_FMT_MC, "drp", "DrazPaint (unpacked)", 0x5800, 10051, DM_FMT_RDWR, | |
555 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, | |
556 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, | |
557 NULL, | |
558 NULL, NULL, | |
559 NULL, NULL, | |
560 NULL, | |
561 { | |
562 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, | |
563 { DT_BITMAP_RAM, 0x0800, 0, 0, NULL, NULL }, | |
564 { DT_SCREEN_RAM, 0x0400, 0, 0, NULL, NULL }, | |
565 { DT_COLOR_REG, 0x2740, 0, DC_BGCOL, NULL, NULL }, | |
566 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
567 } | |
568 }, | |
569 | |
570 { | |
571 D64_FMT_MC | D64_FMT_ILACE, "dlp", "DrazLace 1.0 (packed)", 0x5800, 0, DM_FMT_RDWR, | |
572 C64_SCR_WIDTH , C64_SCR_HEIGHT, | |
573 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, | |
574 fmtProbeDrazLace10Packed, | |
575 fmtDecodeDrazPaintPacked, fmtEncodeDrazPaintPacked, | |
576 NULL, NULL, | |
577 NULL, | |
578 { | |
579 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, | 585 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, |
580 { DT_BITMAP_RAM, 0x0800, 0, 0, NULL, NULL }, | 586 { DT_BITMAP_RAM, 0x0800, 0, 0, NULL, NULL }, |
581 { DT_SCREEN_RAM, 0x0400, 0, 0, NULL, NULL }, | 587 { DT_SCREEN_RAM, 0x0400, 0, 0, NULL, NULL }, |
582 { DT_COLOR_REG, 0x2740, 0, DC_BGCOL, NULL, NULL }, | 588 { DT_COLOR_REG, 0x2740, 0, DC_BGCOL, NULL, NULL }, |
583 { DT_BITMAP_RAM, 0x2800, 1, 0, NULL, NULL }, | 589 { DT_BITMAP_RAM, 0x2800, 1, 0, NULL, NULL }, |
584 { DT_DEC_FUNCTION, 0x2742, 0, 1, fmtDrazLaceGetLaceType, NULL }, | 590 { DT_DEC_FUNCTION, 0x2742, 0, 1, fmtDrazLaceGetLaceType, NULL }, |
585 { DT_ENC_FUNCTION, 0x2742, 0, 1, NULL, fmtDrazLaceSetLaceType }, | 591 { DT_ENC_FUNCTION, 0x2742, 0, 1, NULL, fmtDrazLaceSetLaceType }, |
586 { DT_LAST, 0, 0, 0, NULL, NULL }, | 592 { DT_LAST, 0, 0, 0, NULL, NULL }, |
587 } | 593 }, |
594 }; | |
595 | |
596 | |
597 // | |
598 // Array with data for supported formats | |
599 // | |
600 const DMC64ImageFormat dmC64ImageFormats[] = | |
601 { | |
602 { | |
603 D64_FMT_MC, "d2p", "DrazPaint 1.4/2.0 (packed)", 0x5800, 0, DM_FMT_RDWR, | |
604 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, | |
605 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, | |
606 fmtProbeDrazPaint20Packed, | |
607 fmtDecodeDrazPaintPacked, fmtEncodeDrazPaintPacked, | |
608 NULL, NULL, | |
609 NULL, | |
610 { }, &dmC64CommonFormatOps[4] | |
611 }, | |
612 | |
613 { | |
614 D64_FMT_MC, "drp", "DrazPaint (unpacked)", 0x5800, 10051, DM_FMT_RDWR, | |
615 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, | |
616 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, | |
617 NULL, | |
618 NULL, NULL, | |
619 NULL, NULL, | |
620 NULL, | |
621 { }, &dmC64CommonFormatOps[4] | |
622 }, | |
623 | |
624 { | |
625 D64_FMT_MC | D64_FMT_ILACE, "dlp", "DrazLace 1.0 (packed)", 0x5800, 0, DM_FMT_RDWR, | |
626 C64_SCR_WIDTH , C64_SCR_HEIGHT, | |
627 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, | |
628 fmtProbeDrazLace10Packed, | |
629 fmtDecodeDrazPaintPacked, fmtEncodeDrazPaintPacked, | |
630 NULL, NULL, | |
631 NULL, | |
632 { }, &dmC64CommonFormatOps[5] | |
588 }, | 633 }, |
589 | 634 |
590 { | 635 { |
591 D64_FMT_MC | D64_FMT_ILACE, "drl", "DrazLace 1.0 (unpacked)", 0x5800, 18242, DM_FMT_RDWR, | 636 D64_FMT_MC | D64_FMT_ILACE, "drl", "DrazLace 1.0 (unpacked)", 0x5800, 18242, DM_FMT_RDWR, |
592 C64_SCR_WIDTH , C64_SCR_HEIGHT, | 637 C64_SCR_WIDTH , C64_SCR_HEIGHT, |
593 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, | 638 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
594 NULL, | 639 NULL, |
595 NULL, NULL, | 640 NULL, NULL, |
596 NULL, NULL, | 641 NULL, NULL, |
597 NULL, | 642 NULL, |
598 { | 643 { }, &dmC64CommonFormatOps[5] |
599 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, | |
600 { DT_BITMAP_RAM, 0x0800, 0, 0, NULL, NULL }, | |
601 { DT_SCREEN_RAM, 0x0400, 0, 0, NULL, NULL }, | |
602 { DT_COLOR_REG, 0x2740, 0, DC_BGCOL, NULL, NULL }, | |
603 { DT_BITMAP_RAM, 0x2800, 1, 0, NULL, NULL }, | |
604 { DT_DEC_FUNCTION, 0x2742, 0, 1, fmtDrazLaceGetLaceType, NULL }, | |
605 { DT_ENC_FUNCTION, 0x2742, 0, 1, NULL, fmtDrazLaceSetLaceType }, | |
606 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
607 } | |
608 }, | 644 }, |
609 | 645 |
610 { | 646 { |
611 D64_FMT_MC, "vid", "Vidcom 64 (unpacked)", 0x5800, 10050, DM_FMT_RDWR, | 647 D64_FMT_MC, "vid", "Vidcom 64 (unpacked)", 0x5800, 10050, DM_FMT_RDWR, |
612 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, | 648 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
619 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, | 655 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, |
620 { DT_COLOR_REG, 0x07e8, 0, DC_BGCOL, NULL, NULL }, | 656 { DT_COLOR_REG, 0x07e8, 0, DC_BGCOL, NULL, NULL }, |
621 { DT_BITMAP_RAM, 0x0800, 0, 0, NULL, NULL }, | 657 { DT_BITMAP_RAM, 0x0800, 0, 0, NULL, NULL }, |
622 { DT_SCREEN_RAM, 0x0400, 0, 0, NULL, NULL }, | 658 { DT_SCREEN_RAM, 0x0400, 0, 0, NULL, NULL }, |
623 { DT_LAST, 0, 0, 0, NULL, NULL }, | 659 { DT_LAST, 0, 0, 0, NULL, NULL }, |
624 } | 660 }, |
661 NULL | |
625 }, | 662 }, |
626 | 663 |
627 { | 664 { |
628 D64_FMT_MC, "p64", "Picasso 64 (unpacked)", 0x1800, 10050, DM_FMT_RDWR, | 665 D64_FMT_MC, "p64", "Picasso 64 (unpacked)", 0x1800, 10050, DM_FMT_RDWR, |
629 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, | 666 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
636 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, | 673 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, |
637 { DT_COLOR_REG, 0x07fe, 0, DC_BGCOL, NULL, NULL }, | 674 { DT_COLOR_REG, 0x07fe, 0, DC_BGCOL, NULL, NULL }, |
638 { DT_BITMAP_RAM, 0x0800, 0, 0, NULL, NULL }, | 675 { DT_BITMAP_RAM, 0x0800, 0, 0, NULL, NULL }, |
639 { DT_SCREEN_RAM, 0x0400, 0, 0, NULL, NULL }, | 676 { DT_SCREEN_RAM, 0x0400, 0, 0, NULL, NULL }, |
640 { DT_LAST, 0, 0, 0, NULL, NULL }, | 677 { DT_LAST, 0, 0, 0, NULL, NULL }, |
641 } | 678 }, |
679 NULL | |
642 }, | 680 }, |
643 | 681 |
644 { | 682 { |
645 D64_FMT_MC | D64_FMT_ILACE, "mci", "Truepaint (unpacked)", 0x9c00, 19434, DM_FMT_RD, | 683 D64_FMT_MC | D64_FMT_ILACE, "mci", "Truepaint (unpacked)", 0x9c00, 19434, DM_FMT_RD, |
646 C64_SCR_WIDTH , C64_SCR_HEIGHT, | 684 C64_SCR_WIDTH , C64_SCR_HEIGHT, |
656 { DT_BITMAP_RAM, 0x2400, 1, 0, NULL, NULL }, | 694 { DT_BITMAP_RAM, 0x2400, 1, 0, NULL, NULL }, |
657 { DT_SCREEN_RAM, 0x4400, 1, 0, NULL, NULL }, | 695 { DT_SCREEN_RAM, 0x4400, 1, 0, NULL, NULL }, |
658 { DT_COLOR_RAM, 0x4800, 0, 0, NULL, NULL }, | 696 { DT_COLOR_RAM, 0x4800, 0, 0, NULL, NULL }, |
659 { DT_DEC_FUNCTION, 0x0000, 0, 0, fmtTruePaintGetLaceType, NULL }, | 697 { DT_DEC_FUNCTION, 0x0000, 0, 0, fmtTruePaintGetLaceType, NULL }, |
660 { DT_LAST, 0, 0, 0, NULL, NULL }, | 698 { DT_LAST, 0, 0, 0, NULL, NULL }, |
661 } | 699 }, |
700 NULL | |
662 }, | 701 }, |
663 | 702 |
664 { | 703 { |
665 D64_FMT_MC, "kla", "Koala Paint (unpacked)", 0x6000, 10003, DM_FMT_RDWR, | 704 D64_FMT_MC, "kla", "Koala Paint (unpacked)", 0x6000, 10003, DM_FMT_RDWR, |
666 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, | 705 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
667 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, | 706 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
668 NULL, | 707 NULL, |
669 NULL, NULL, | 708 NULL, NULL, |
670 NULL, NULL, | 709 NULL, NULL, |
671 NULL, | 710 NULL, |
672 { | 711 { }, &dmC64CommonFormatOps[0] |
673 { DT_BITMAP_RAM, 0x0000, 0, 0, NULL, NULL }, | |
674 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, | |
675 { DT_COLOR_RAM, 0x2328, 0, 0, NULL, NULL }, | |
676 { DT_COLOR_REG, 0x270f, 0, DC_BGCOL, NULL, NULL }, | |
677 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
678 } | |
679 }, | 712 }, |
680 | 713 |
681 { | 714 { |
682 D64_FMT_MC, "klp", "Koala Paint (packed)", 0x6000, 0, DM_FMT_RDWR, | 715 D64_FMT_MC, "klp", "Koala Paint (packed)", 0x6000, 0, DM_FMT_RDWR, |
683 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, | 716 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
684 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, | 717 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
685 NULL, | 718 NULL, |
686 fmtDecodeKoalaPaintPacked, fmtEncodeKoalaPaintPacked, | 719 fmtDecodeKoalaPaintPacked, fmtEncodeKoalaPaintPacked, |
687 NULL, NULL, | 720 NULL, NULL, |
688 NULL, | 721 NULL, |
689 { | 722 { }, &dmC64CommonFormatOps[0] |
690 { DT_BITMAP_RAM, 0x0000, 0, 0, NULL, NULL }, | |
691 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, | |
692 { DT_COLOR_RAM, 0x2328, 0, 0, NULL, NULL }, | |
693 { DT_COLOR_REG, 0x270f, 0, DC_BGCOL, NULL, NULL }, | |
694 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
695 } | |
696 }, | 723 }, |
697 | 724 |
698 { | 725 { |
699 D64_FMT_MC, "aas", "Advanced Art Studio (unpacked)", 0x2000, 10018, DM_FMT_RDWR, | 726 D64_FMT_MC, "aas", "Advanced Art Studio (unpacked)", 0x2000, 10018, DM_FMT_RDWR, |
700 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, | 727 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
718 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, | 745 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
719 fmtProbeAmicaPaintPacked, | 746 fmtProbeAmicaPaintPacked, |
720 fmtDecodeAmicaPaintPacked, fmtEncodeAmicaPaintPacked, | 747 fmtDecodeAmicaPaintPacked, fmtEncodeAmicaPaintPacked, |
721 NULL, NULL, | 748 NULL, NULL, |
722 NULL, | 749 NULL, |
723 { | 750 { }, &dmC64CommonFormatOps[1] |
724 { DT_BITMAP_RAM, 0x0000, 0, 0, NULL, NULL }, | |
725 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, | |
726 { DT_COLOR_RAM, 0x2328, 0, 0, NULL, NULL }, | |
727 { DT_COLOR_REG, 0x2710, 0, DC_BGCOL, NULL, NULL }, | |
728 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
729 } | |
730 }, | 751 }, |
731 | 752 |
732 { | 753 { |
733 D64_FMT_MC, "rpm", "Run Paint (unpacked)", 0x6000, 10006, DM_FMT_RDWR, | 754 D64_FMT_MC, "rpm", "Run Paint (unpacked)", 0x6000, 10006, DM_FMT_RDWR, |
734 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, | 755 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
735 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, | 756 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
736 NULL, | 757 NULL, |
737 NULL, NULL, | 758 NULL, NULL, |
738 NULL, NULL, | 759 NULL, NULL, |
739 NULL, | 760 NULL, |
740 { | 761 { }, &dmC64CommonFormatOps[1] |
741 { DT_BITMAP_RAM, 0x0000, 0, 0, NULL, NULL }, | 762 }, |
742 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, | 763 |
743 { DT_COLOR_RAM, 0x2328, 0, 0, NULL, NULL }, | 764 { |
744 { DT_COLOR_REG, 0x2710, 0, DC_BGCOL, NULL, NULL }, | 765 D64_FMT_MC, "ipc", "Interpaint MC (unpacked)", 0x4000, 10003, DM_FMT_RDWR, |
745 { DT_LAST, 0, 0, 0, NULL, NULL }, | 766 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
746 } | 767 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
768 NULL, | |
769 NULL, NULL, | |
770 NULL, NULL, | |
771 NULL, | |
772 { }, &dmC64CommonFormatOps[1] | |
747 }, | 773 }, |
748 | 774 |
749 { | 775 { |
750 D64_FMT_HIRES, "art", "Art Studio (unpacked)", 0x2000, 9009, DM_FMT_RD, | 776 D64_FMT_HIRES, "art", "Art Studio (unpacked)", 0x2000, 9009, DM_FMT_RD, |
751 C64_SCR_WIDTH , C64_SCR_HEIGHT, | 777 C64_SCR_WIDTH , C64_SCR_HEIGHT, |
752 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, | 778 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
753 NULL, | 779 NULL, |
754 NULL, NULL, | 780 NULL, NULL, |
755 NULL, NULL, | 781 NULL, NULL, |
756 NULL, | 782 NULL, |
757 { | 783 { }, &dmC64CommonFormatOps[2] |
758 { DT_BITMAP_RAM, 0x0000, 0, 0, NULL, NULL }, | |
759 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, | |
760 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
761 } | |
762 }, | 784 }, |
763 | 785 |
764 { | 786 { |
765 D64_FMT_HIRES, "iph", "Interpaint (unpacked)", 0x4000, 9002, DM_FMT_RD, | 787 D64_FMT_HIRES, "iph", "Interpaint (unpacked)", 0x4000, 9002, DM_FMT_RD, |
766 C64_SCR_WIDTH , C64_SCR_HEIGHT, | 788 C64_SCR_WIDTH , C64_SCR_HEIGHT, |
767 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, | 789 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, |
768 NULL, | 790 NULL, |
769 NULL, NULL, | 791 NULL, NULL, |
770 NULL, NULL, | 792 NULL, NULL, |
771 NULL, | 793 NULL, |
772 { | 794 { }, &dmC64CommonFormatOps[2] |
773 { DT_BITMAP_RAM, 0x0000, 0, 0, NULL, NULL }, | |
774 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, | |
775 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
776 } | |
777 }, | |
778 | |
779 { | |
780 D64_FMT_MC, "ipc", "Interpaint MC (unpacked)", 0x4000, 10003, DM_FMT_RDWR, | |
781 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, | |
782 C64_SCR_CH_WIDTH, C64_SCR_CH_HEIGHT, | |
783 NULL, | |
784 NULL, NULL, | |
785 NULL, NULL, | |
786 NULL, | |
787 { | |
788 { DT_BITMAP_RAM, 0x0000, 0, 0, NULL, NULL }, | |
789 { DT_SCREEN_RAM, 0x1f40, 0, 0, NULL, NULL }, | |
790 { DT_COLOR_RAM, 0x2328, 0, 0, NULL, NULL }, | |
791 { DT_COLOR_REG, 0x2710, 0, DC_BGCOL, NULL, NULL }, | |
792 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
793 } | |
794 }, | 795 }, |
795 | 796 |
796 { | 797 { |
797 D64_FMT_HIRES, "dd", "Doodle (unpacked)", 0x1c00, 9218, DM_FMT_RDWR, | 798 D64_FMT_HIRES, "dd", "Doodle (unpacked)", 0x1c00, 9218, DM_FMT_RDWR, |
798 C64_SCR_WIDTH , C64_SCR_HEIGHT, | 799 C64_SCR_WIDTH , C64_SCR_HEIGHT, |
803 NULL, | 804 NULL, |
804 { | 805 { |
805 { DT_SCREEN_RAM, 0x0000, 0, 0, NULL, NULL }, | 806 { DT_SCREEN_RAM, 0x0000, 0, 0, NULL, NULL }, |
806 { DT_BITMAP_RAM, 0x0400, 0, 0, NULL, NULL }, | 807 { DT_BITMAP_RAM, 0x0400, 0, 0, NULL, NULL }, |
807 { DT_LAST, 0, 0, 0, NULL, NULL }, | 808 { DT_LAST, 0, 0, 0, NULL, NULL }, |
808 } | 809 }, |
810 NULL | |
809 }, | 811 }, |
810 | 812 |
811 { | 813 { |
812 D64_FMT_MC | D64_FMT_FLI, "bfli", "Big FLI (unpacked) [BROKEN]", 0x3bff, 33795, DM_FMT_RD, | 814 D64_FMT_MC | D64_FMT_FLI, "bfli", "Big FLI (unpacked) [BROKEN]", 0x3bff, 33795, DM_FMT_RD, |
813 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT * 2, | 815 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT * 2, |
821 DEF_SCREEN_RAMS_8( 0x0401, 0, 0x400), | 823 DEF_SCREEN_RAMS_8( 0x0401, 0, 0x400), |
822 { DT_BITMAP_RAM, 0x2401, 0, 0, NULL, NULL }, | 824 { DT_BITMAP_RAM, 0x2401, 0, 0, NULL, NULL }, |
823 DEF_SCREEN_RAMS_8( 0x4401, 8, 0x400), | 825 DEF_SCREEN_RAMS_8( 0x4401, 8, 0x400), |
824 { DT_BITMAP_RAM, 0x6401 - 24*8, 1, 0, NULL, NULL }, | 826 { DT_BITMAP_RAM, 0x6401 - 24*8, 1, 0, NULL, NULL }, |
825 { DT_LAST, 0, 0, 0, NULL, NULL }, | 827 { DT_LAST, 0, 0, 0, NULL, NULL }, |
826 } | 828 }, |
829 NULL | |
827 }, | 830 }, |
828 | 831 |
829 | 832 |
830 { | 833 { |
831 D64_FMT_MC | D64_FMT_FLI, "bml", "Blackmail FLI (unpacked)", 0x3b00, 17474, DM_FMT_RDWR, | 834 D64_FMT_MC | D64_FMT_FLI, "bml", "Blackmail FLI (unpacked)", 0x3b00, 17474, DM_FMT_RDWR, |
839 { DT_EXTRA_DATA, 0x0000, 0, 200, NULL, NULL }, | 842 { DT_EXTRA_DATA, 0x0000, 0, 200, NULL, NULL }, |
840 { DT_COLOR_RAM, 0x0100, 0, 0, NULL, NULL }, | 843 { DT_COLOR_RAM, 0x0100, 0, 0, NULL, NULL }, |
841 DEF_SCREEN_RAMS_8( 0x0500, 0, 0x400), | 844 DEF_SCREEN_RAMS_8( 0x0500, 0, 0x400), |
842 { DT_BITMAP_RAM, 0x2500, 0, 0, NULL, NULL }, | 845 { DT_BITMAP_RAM, 0x2500, 0, 0, NULL, NULL }, |
843 { DT_LAST, 0, 0, 0, NULL, NULL }, | 846 { DT_LAST, 0, 0, 0, NULL, NULL }, |
844 } | 847 }, |
848 NULL | |
845 }, | 849 }, |
846 | 850 |
847 { | 851 { |
848 D64_FMT_MC | D64_FMT_FLI, "fli", "FLI Designer (unpacked)", 0, 17409, DM_FMT_RD, | 852 D64_FMT_MC | D64_FMT_FLI, "fli", "FLI Designer (unpacked)", 0, 17409, DM_FMT_RD, |
849 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, | 853 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
855 { | 859 { |
856 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, | 860 { DT_COLOR_RAM, 0x0000, 0, 0, NULL, NULL }, |
857 DEF_SCREEN_RAMS_8( 0x0400, 0, 0x400), | 861 DEF_SCREEN_RAMS_8( 0x0400, 0, 0x400), |
858 { DT_BITMAP_RAM, 0x2400, 0, 0, NULL, NULL }, | 862 { DT_BITMAP_RAM, 0x2400, 0, 0, NULL, NULL }, |
859 { DT_LAST, 0, 0, 0, NULL, NULL }, | 863 { DT_LAST, 0, 0, 0, NULL, NULL }, |
860 } | 864 }, |
865 NULL | |
861 }, | 866 }, |
862 | 867 |
863 { | 868 { |
864 D64_FMT_MC, "xx1", "Unknown $2000 format (unpacked)", 0x2000, 10242, DM_FMT_RD, | 869 D64_FMT_MC, "xx1", "Unknown $2000 format (unpacked)", 0x2000, 10242, DM_FMT_RD, |
865 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, | 870 C64_SCR_WIDTH / 2, C64_SCR_HEIGHT, |
872 { DT_BITMAP_RAM, 0x0000, 0, 0, NULL, NULL }, | 877 { DT_BITMAP_RAM, 0x0000, 0, 0, NULL, NULL }, |
873 { DT_SCREEN_RAM, 0x2000, 0, 0, NULL, NULL }, | 878 { DT_SCREEN_RAM, 0x2000, 0, 0, NULL, NULL }, |
874 { DT_COLOR_RAM, 0x2400, 0, 0, NULL, NULL }, | 879 { DT_COLOR_RAM, 0x2400, 0, 0, NULL, NULL }, |
875 { DT_COLOR_SET, 0x00 , 0, DC_BGCOL, NULL, NULL }, | 880 { DT_COLOR_SET, 0x00 , 0, DC_BGCOL, NULL, NULL }, |
876 { DT_LAST, 0, 0, 0, NULL, NULL }, | 881 { DT_LAST, 0, 0, 0, NULL, NULL }, |
877 } | 882 }, |
883 NULL | |
878 }, | 884 }, |
879 | 885 |
880 #define XX2_WIDTH_CH 40 | 886 #define XX2_WIDTH_CH 40 |
881 #define XX2_HEIGHT_CH 10 | 887 #define XX2_HEIGHT_CH 10 |
882 #define XX2_SIZE (XX2_WIDTH_CH * XX2_HEIGHT_CH) | 888 #define XX2_SIZE (XX2_WIDTH_CH * XX2_HEIGHT_CH) |
894 { DT_BITMAP_RAM, 0x0000, 0, XX2_BSIZE, NULL, NULL }, | 900 { DT_BITMAP_RAM, 0x0000, 0, XX2_BSIZE, NULL, NULL }, |
895 { DT_SCREEN_RAM, XX2_BSIZE, 0, XX2_SIZE, NULL, NULL }, | 901 { DT_SCREEN_RAM, XX2_BSIZE, 0, XX2_SIZE, NULL, NULL }, |
896 { DT_COLOR_RAM, XX2_BSIZE + XX2_SIZE, 0, XX2_SIZE, NULL, NULL }, | 902 { DT_COLOR_RAM, XX2_BSIZE + XX2_SIZE, 0, XX2_SIZE, NULL, NULL }, |
897 { DT_COLOR_SET, 11, 0, DC_BGCOL, NULL, NULL }, | 903 { DT_COLOR_SET, 11, 0, DC_BGCOL, NULL, NULL }, |
898 { DT_LAST, 0, 0, 0, NULL, NULL }, | 904 { DT_LAST, 0, 0, 0, NULL, NULL }, |
899 } | 905 }, |
906 NULL | |
900 }, | 907 }, |
901 | 908 |
902 { | 909 { |
903 D64_FMT_MC | D64_FMT_FLI | D64_FMT_ILACE, | 910 D64_FMT_MC | D64_FMT_FLI | D64_FMT_ILACE, |
904 "fp2", "FunPaint II (unpacked)", 0x3ff0, 33694, DM_FMT_RD, | 911 "fp2", "FunPaint II (unpacked)", 0x3ff0, 33694, DM_FMT_RD, |
906 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, | 913 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
907 fmtProbeFunPaint2, | 914 fmtProbeFunPaint2, |
908 fmtDecodeFunPaint2, fmtEncodeFunPaint2Unpacked, | 915 fmtDecodeFunPaint2, fmtEncodeFunPaint2Unpacked, |
909 NULL, NULL, | 916 NULL, NULL, |
910 fmtGetPixelFunPaint2, | 917 fmtGetPixelFunPaint2, |
911 { | 918 { }, &dmC64CommonFormatOps[3] |
912 DEF_SCREEN_RAMS_8( 0x0000, 0, 0x400), | |
913 { DT_BITMAP_RAM, 0x2000, 0, 0, NULL, NULL }, | |
914 { DT_EXTRA_DATA, 0x3f40, 0, 100, NULL, NULL }, | |
915 { DT_COLOR_RAM, 0x4000, 0, 0, NULL, NULL }, | |
916 DEF_SCREEN_RAMS_8( 0x43e8, 8, 0x400), | |
917 { DT_BITMAP_RAM, 0x63e8, 1, 0, NULL, NULL }, | |
918 { DT_EXTRA_DATA, 0x8328, 1, 100, NULL, NULL }, | |
919 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
920 } | |
921 }, | 919 }, |
922 | 920 |
923 { | 921 { |
924 D64_FMT_MC | D64_FMT_FLI | D64_FMT_ILACE, | 922 D64_FMT_MC | D64_FMT_FLI | D64_FMT_ILACE, |
925 "fp2p", "FunPaint II (packed)", 0x3ff0, 0, DM_FMT_RD, | 923 "fp2p", "FunPaint II (packed)", 0x3ff0, 0, DM_FMT_RD, |
927 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, | 925 C64_SCR_CH_WIDTH , C64_SCR_CH_HEIGHT, |
928 NULL, | 926 NULL, |
929 fmtDecodeFunPaint2, fmtEncodeFunPaint2Packed, | 927 fmtDecodeFunPaint2, fmtEncodeFunPaint2Packed, |
930 NULL, NULL, | 928 NULL, NULL, |
931 fmtGetPixelFunPaint2, | 929 fmtGetPixelFunPaint2, |
932 { | 930 { }, &dmC64CommonFormatOps[3] |
933 DEF_SCREEN_RAMS_8( 0x0000, 0, 0x400), | |
934 { DT_BITMAP_RAM, 0x2000, 0, 0, NULL, NULL }, | |
935 { DT_EXTRA_DATA, 0x3f40, 0, 100, NULL, NULL }, | |
936 { DT_COLOR_RAM, 0x4000, 0, 0, NULL, NULL }, | |
937 DEF_SCREEN_RAMS_8( 0x43e8, 8, 0x400), | |
938 { DT_BITMAP_RAM, 0x63e8, 1, 0, NULL, NULL }, | |
939 { DT_EXTRA_DATA, 0x8328, 1, 100, NULL, NULL }, | |
940 { DT_LAST, 0, 0, 0, NULL, NULL }, | |
941 } | |
942 }, | 931 }, |
943 | 932 |
944 { | 933 { |
945 D64_FMT_MC | D64_FMT_FLI | D64_FMT_ILACE, | 934 D64_FMT_MC | D64_FMT_FLI | D64_FMT_ILACE, |
946 "gun", "GunPaint (unpacked)", 0x4000, 0, DM_FMT_RD, | 935 "gun", "GunPaint (unpacked)", 0x4000, 0, DM_FMT_RD, |
957 { DT_COLOR_RAM, 0x4000, 0, 0, NULL, NULL }, | 946 { DT_COLOR_RAM, 0x4000, 0, 0, NULL, NULL }, |
958 DEF_SCREEN_RAMS_8( 0x4400, 8, 0x400), | 947 DEF_SCREEN_RAMS_8( 0x4400, 8, 0x400), |
959 { DT_BITMAP_RAM, 0x6400, 1, 0, NULL, NULL }, | 948 { DT_BITMAP_RAM, 0x6400, 1, 0, NULL, NULL }, |
960 { DT_EXTRA_DATA, 0x47e8, 1, 20, NULL, NULL }, | 949 { DT_EXTRA_DATA, 0x47e8, 1, 20, NULL, NULL }, |
961 { DT_LAST, 0, 0, 0, NULL, NULL }, | 950 { DT_LAST, 0, 0, 0, NULL, NULL }, |
962 } | 951 }, |
952 NULL | |
963 }, | 953 }, |
964 | 954 |
965 { | 955 { |
966 D64_FMT_HIRES | D64_FMT_FLI, | 956 D64_FMT_HIRES | D64_FMT_FLI, |
967 "chi", "Crest Hires FLI Designer (unpacked)", 0x4000, 16386, DM_FMT_RD, | 957 "chi", "Crest Hires FLI Designer (unpacked)", 0x4000, 16386, DM_FMT_RD, |
973 fmtGetPixelCHFLI, | 963 fmtGetPixelCHFLI, |
974 { | 964 { |
975 { DT_BITMAP_RAM, 0x0000, 0, 0, NULL, NULL }, | 965 { DT_BITMAP_RAM, 0x0000, 0, 0, NULL, NULL }, |
976 DEF_SCREEN_RAMS_8( 0x2000, 0, 0x400), | 966 DEF_SCREEN_RAMS_8( 0x2000, 0, 0x400), |
977 { DT_LAST, 0, 0, 0, NULL, NULL }, | 967 { DT_LAST, 0, 0, 0, NULL, NULL }, |
978 } | 968 }, |
969 NULL | |
979 }, | 970 }, |
980 }; | 971 }; |
981 | 972 |
982 const int ndmC64ImageFormats = sizeof(dmC64ImageFormats) / sizeof(dmC64ImageFormats[0]); | 973 const int ndmC64ImageFormats = sizeof(dmC64ImageFormats) / sizeof(dmC64ImageFormats[0]); |
983 | 974 |