DREAMWEB: 'doblocks' moves to backdrops.cpp

This commit is contained in:
Bertrand Augereau 2011-08-17 18:57:17 +02:00
parent 3700e04e0f
commit 1f47b877bd
2 changed files with 42 additions and 42 deletions

View File

@ -26,6 +26,48 @@
namespace DreamGen {
void DreamGenContext::doblocks() {
uint16 dstOffset = data.word(kMapady) * 320 + data.word(kMapadx);
uint16 mapOffset = kMap + data.byte(kMapy) * kMapwidth + data.byte(kMapx);
ds = data.word(kMapdata);
const uint8 *mapData = ds.ptr(mapOffset, 0);
ds = data.word(kBackdrop);
const uint8 *blocks = ds.ptr(kBlocks, 0);
es = data.word(kWorkspace);
uint8 *dstBuffer = es.ptr(dstOffset, 0);
for (size_t i = 0; i < 10; ++i) {
for (size_t j = 0; j < 11; ++j) {
uint16 blockType = mapData[j];
if (blockType != 0) {
uint8 *dst = dstBuffer + i * 320 * 16 + j * 16;
const uint8 *block = blocks + blockType * 256;
for (size_t k = 0; k < 4; ++k) {
memcpy(dst, block, 16);
block += 16;
dst += 320;
}
for (size_t k = 0; k < 12; ++k) {
memcpy(dst, block, 16);
memset(dst + 16, 0xdf, 4);
block += 16;
dst += 320;
}
dst += 4;
ax = 0x0dfdf;
memset(dst, 0xdf, 16);
dst += 320;
memset(dst, 0xdf, 16);
dst += 320;
memset(dst, 0xdf, 16);
dst += 320;
memset(dst, 0xdf, 16);
}
}
mapData += kMapwidth;
}
}
uint8 DreamGenContext::getxad(const uint8 *setData, uint8 *result) {
uint8 v0 = setData[0];
uint8 v1 = setData[1];

View File

@ -378,48 +378,6 @@ void DreamGenContext::clearwork() {
memset(workspace(), 0, 320*200);
}
void DreamGenContext::doblocks() {
uint16 dstOffset = data.word(kMapady) * 320 + data.word(kMapadx);
uint16 mapOffset = kMap + data.byte(kMapy) * kMapwidth + data.byte(kMapx);
ds = data.word(kMapdata);
const uint8 *mapData = ds.ptr(mapOffset, 0);
ds = data.word(kBackdrop);
const uint8 *blocks = ds.ptr(kBlocks, 0);
es = data.word(kWorkspace);
uint8 *dstBuffer = es.ptr(dstOffset, 0);
for (size_t i = 0; i < 10; ++i) {
for (size_t j = 0; j < 11; ++j) {
uint16 blockType = mapData[j];
if (blockType != 0) {
uint8 *dst = dstBuffer + i * 320 * 16 + j * 16;
const uint8 *block = blocks + blockType * 256;
for (size_t k = 0; k < 4; ++k) {
memcpy(dst, block, 16);
block += 16;
dst += 320;
}
for (size_t k = 0; k < 12; ++k) {
memcpy(dst, block, 16);
memset(dst + 16, 0xdf, 4);
block += 16;
dst += 320;
}
dst += 4;
ax = 0x0dfdf;
memset(dst, 0xdf, 16);
dst += 320;
memset(dst, 0xdf, 16);
dst += 320;
memset(dst, 0xdf, 16);
dst += 320;
memset(dst, 0xdf, 16);
}
}
mapData += kMapwidth;
}
}
void DreamGenContext::zoom() {
if (data.word(kWatchingtime) != 0)
return;