Mercurial > hg > dmlib
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; - } } } }