diff tools/gfxconv.c @ 1588:ca087c0cc9c4

Refactor the c64 format memory handling a bit for more flexibility.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 14 May 2018 04:27:53 +0300
parents a076c9d9b321
children 3cc7b2aadda3
line wrap: on
line diff
--- a/tools/gfxconv.c	Mon May 14 04:11:45 2018 +0300
+++ b/tools/gfxconv.c	Mon May 14 04:27:53 2018 +0300
@@ -1003,10 +1003,9 @@
     {
         for (int i = 0; i < dst->nbanks; i++)
         {
-            memcpy(dst->color[i], src->color[i], dst->screenSize);
-            memcpy(dst->bitmap[i], src->bitmap[i], dst->bitmapSize);
-            memcpy(dst->screen[i], src->screen[i], dst->screenSize);
-            memcpy(dst->charmem[i], src->charmem[i], dst->charmemSize);
+            dmC64MemBlockCopy(&dst->color[i], &src->color[i]);
+            dmC64MemBlockCopy(&dst->screen[i], &src->screen[i]);
+            dmC64MemBlockCopy(&dst->bitmap[i], &src->bitmap[i]);
         }
     }
     else
@@ -1017,33 +1016,31 @@
             dmMsg(1, "Upconverting multicolor to FLI.\n");
             for (int i = 0; i < dst->nbanks; i++)
             {
-                memcpy(dst->color[i], src->color[0], dst->screenSize);
-                memcpy(dst->screen[i], src->screen[0], dst->screenSize);
-                memcpy(dst->bitmap[i], src->bitmap[0], dst->bitmapSize);
-                memcpy(dst->charmem[i], src->charmem[0], dst->charmemSize);
+                dmC64MemBlockCopy(&dst->color[i], &src->color[0]);
+                dmC64MemBlockCopy(&dst->screen[i], &src->screen[0]);
+                dmC64MemBlockCopy(&dst->bitmap[i], &src->bitmap[0]);
             }
+        }
+
+        for (int i = 0; i < D64_MAX_ENCDEC_OPS; i++)
+        {
+            const DMC64EncDecOp *op = &dstFmt->encdecOps[i];
+            size_t size;
 
-            for (int i = 0; i < D64_MAX_ENCDEC_OPS; i++)
+            // Check for last operator
+            if (op->type == DT_LAST)
+                break;
+
+            // Check size
+            if (!dmC64GetOpSize(op, dstFmt, &size))
+                return DMERR_INVALID_DATA;
+
+            // Perform operation
+            switch (op->type)
             {
-                const DMC64EncDecOp *op = &dstFmt->encdecOps[i];
-                size_t size;
-
-                // Check for last operator
-                if (op->type == DT_LAST)
+                case DT_EXTRA_DATA:
+                    dmC64MemBlockAlloc(&dst->extraData[op->bank], size);
                     break;
-
-                // Check size
-                if (!dmC64GetOpSize(op, dstFmt, &size))
-                    return DMERR_INVALID_DATA;
-
-                // Perform operation
-                switch (op->type)
-                {
-                    case DT_EXTRA_DATA:
-                        dst->extraData[op->bank] = dmMalloc0(size);
-                        dst->extraDataSizes[op->bank] = size;
-                        break;
-                }
             }
         }
     }